Broadleaf Microservices
  • v1.0.0-latest-prod

Catalog Services Configuration Properties

This document covers the miscellaneous configuration properties used by the Catalog Services.

Catalog Cache Properties

These properties influence cache settings for the catalog service. Caching uses Apache Ignite.

  • broadleaf.catalog.cache.byActiveCategoryTtl: Time-to-live for reading an active category by URL. Default is 5 minutes.

  • broadleaf.catalog.cache.byActiveCategoryIdTtl: Time-to-live for reading an active category by ID. Default is 5 minutes.

  • broadleaf.catalog.cache.byActiveProductTtl: Time-to-live for reading active products by ID. Default is 5 minutes.

  • broadleaf.catalog.cache.byActiveProductUriTtl: Time-to-live for reading active products by URL. Default is 5 minutes.

  • broadleaf.catalog.cache.byProductAssetTtl: Time-to-live for reading product assets by their parent product IDs. Default is 5 minutes.

  • broadleaf.catalog.cache.byProductContributionTtl: Time-to-live for a cache used to read the product IDs from CategoryProducts related to a Category for a category-details request. Default is 5 minutes.

  • broadleaf.catalog.cache.byRuleProductContributionTtl: Time-to-live for reading products that belong to a rule-based Category for category-details requests. Default is 5 minutes.

  • broadleaf.catalog.cache.byVariantTtl: Time-to-live for reading variants by their own or their parent product’s ID. Default is 5 minutes.

  • broadleaf.catalog.cache.byPromotionalProductTtl: Time-to-live for reading category promotional products by their parent category’s ID. Default is 5 minutes.

  • broadleaf.catalog.cache.byCategoryAssetTtl: Time-to-live for reading category assets by their parent category’s ID. Default is 5 minutes.

  • broadleaf.catalog.cache.byBreadcrumbContributionTtl: Time-to-live for building the breadcrumbs for a category-details request. Default is 5 minutes.

  • broadleaf.catalog.cache.byBreadcrumbProductContributionTtl: Time-to-live for building the breadcrumbs for a product-details request. Default is 5 minutes.

  • broadleaf.catalog.cache.byCategoryProductTtl: Time-to-live for reading category-products by the related products' IDs. Default is 5 minutes.

Catalog Service Properties

Clone Product Notification Properties

These are the configuration properties for the NotificationHandler and RetryHandler related to CloneProductProducer.

  • broadleaf.cloneproduct.notification.failureRateThreshold: Configures the failure rate threshold in percentage above which the CircuitBreaker should trip open and start short-circuiting calls.

    • The default is 50.

  • broadleaf.cloneproduct.notification.ringBufferSizeInClosedState: Configures the size of the ring buffer when the CircuitBreaker is closed. The CircuitBreaker stores the success/failure status of the latest calls in a ring buffer.

    • For example, if ringBufferSizeInClosedState is 100, then at least 100 calls must be evaluated, before the failure rate can be calculated. If only 99 calls have been evaluated the CircuitBreaker will not trip open even if all 99 calls have failed.

    • The default is 100.

  • broadleaf.cloneproduct.notification.ringBufferSizeInHalfOpenState: Configures the size of the ring buffer when the CircuitBreaker is half open. The CircuitBreaker stores the success/failure status of the latest calls in a ring buffer.

    • For example, if ringBufferSizeInClosedState is 10, then at least 10 calls must be evaluated, before the failure rate can be calculated. If only 9 calls have been evaluated the CircuitBreaker will not trip back to closed or open even if all 9 calls have failed.

    • The default is 10.

  • broadleaf.cloneproduct.notification.waitDurationInOpenState: Configures the wait duration which specifies how long the CircuitBreaker should stay open, before it switches to half open.

    • The default is 60 seconds.

  • broadleaf.cloneproduct.notification.sendTimeout: The length of time a message send attempt should block before timing out. Such a timeout is considered a failure.

    • The default is 30 seconds.

  • broadleaf.cloneproduct.retry.retryClusterServiceNamespace: Name used to identify the cluster singleton lock.

  • broadleaf.cloneproduct.retry.developerMode: Indicates the retry system is intended in this configuration to be used by developers, rather than a real deployment.

    • This setting causes an additional random piece of information to be appended to retryClusterServiceNamespace so that instances of the same service being run by multiple devs on the same subnet are not interpreted as being part of the same cluster. Otherwise, retry behavior could be unpredictable between machines and retry services might not start up locally for one or more devs.

    • The default is true.

  • broadleaf.cloneproduct.retry.retryInterval: The length of time to wait between each batch retry attempt. The default is 5 minutes.

  • broadleaf.cloneproduct.retry.pageSize: The number of valid, unacknowledged records to batch process per interval.

    • The default is 100.

  • broadleaf.cloneproduct.retry.maxAttempts: The maximum number of failed attempts that should be made before ceasing to attempt to send a message for an unacknowledged record.

    • The default is 10.

  • broadleaf.cloneproduct.retry.maxAttemptWaitTime: The maximum amount of time that should elapse before making another attempt on an unacknowledged record. The time between retries for an individual record is generally governed by a exponential backoff algorithm, but this value represents a ceiling beyond which that algorithm may not exceed.

    • The default is 4 hours.

  • broadleaf.cloneproduct.retry.initialFaultThreshold: The amount of time that must elapse before the retry mechanism can kick in on a newly altered and unacknowledged record. This provides a safe window in which the normal operation can acknowledge the record without risk of interference from the retry handler.

    • The default is 5 minutes.

  • broadleaf.cloneproduct.retry.recordProcessingWait: The amount of time to pause between the processing of each unacknowledged record in the batch. This is primarily a throttling measure.

    • The default value is 0 (don’t throttle).

  • broadleaf.cloneproduct.retry.delayAtStartup: The amount of time after initialization of the application that must pass before the retry scheduler starts. Can be used to provide some buffer of time for other components (e.g. kafka bindings) to fully initialize.

    • The default is 20 seconds.

Provider Properties

These properties are for configuring the datasource.

General Data Source

This exposes all of the Spring DataSourceProperties under broadleaf.catalog.datasource. This is to allow the regular property structure to be restricted to a specific Broadleaf data route.

Liquibase

This exposes all of the Spring LiquibaseProperties under broadleaf.catalog.liquibase. This is to allow the regular property structure to be restricted to a specific Broadleaf data route.

JPA

This exposes all of the Spring JpaProperties under broadleaf.catalog.jpa in addition to the Spring HibernateProperties under broadleaf.catalog.jpa.hibernate. This is to allow the regular property structure to be restricted to a specific Broadleaf data route.

Delegating Data Source

These are additional properties that define datasource configuration that employs SchemaDelegatingDataSource. This allows through configuration alone a setup that declares multiple datasources (each tied to a schema) backed by a common base datasource. This config is generally employed as part of a flex-package installation where multiple services run together in a single JVM.

  • broadleaf.catalog.delegating.schema: The schema that borrowed connections should be initialized to in SchemaDelegatingDataSource.

  • broadleaf.catalog.delegating.delegateRef: The back-reference to another section of configuration that fully describes the base datasource backing the SchemaDelegatingDataSource.

Sku Generation Service Properties

  • broadleaf.catalog.sku.generation.postfixCharacters: During a SKU generation operation, how many alphanumeric characters should be used for the code. By default, this is 6.

Catalog Metadata Properties

  • broadleaf.catalog.metadata.active-product-types: The list of product types that should be exposed in the admin.

  • broadleaf.catalog.metadata.add-to-cart-inventory-reservation-strategy-enabled: Whether the ADD TO CART inventory reservation strategy is enabled.

    • Default is false.

  • broadleaf.catalog.metadata.product-active-export-polling-enabled: Whether or not the active product exports should be polled in the admin view.

    • Default is true.

  • broadleaf.catalog.metadata.product-inactive-export-polling-enabled: Whether or not the completed product exports should be polled in the admin view.

    • Default is true.

  • broadleaf.catalog.metadata.products.legacy.enabled: Whether to enable the older version of the Product management forms. False by default.

  • broadleaf.catalog.metadata.products.enable-business-types: Whether to enable the updated Product list grid to filter and group Products by Business Type (e.g. Product Type) in a single grid rather than split the products into multiple grids. True by default.

    • Since Catalog 1.8.11, Release Train 1.8.4

Catalog Access Policies

These properties are prefixed with broadleaf.catalog.catalog-access-policy

  • request-attribute-list: Represents the list of attribute from a WebRequest to store on a CatalogAccessPolicyContext for match rules to be evaluated against.

    • The attribute name should be matched by a field name configured in metadata for the matchRule rule-builder in the admin to correctly target them.

  • additional-claims: Represents a list of additional auth token claims to add as attributes to the CatalogAccessPolicyContext for match rules to be evaluated against.

    • The claim name should be matched by a field name configured in metadata for the matchRule rule-builder.

  • whitelisted-service-callers: The names of external microservices that are expected to call Catalog Service for admin or bulk processing requests and should be whitelisted so that they bypass Catalog Access Policy filtering.

    • When another service calls Catalog, the original user’s (e.g., admin user’s) auth token is replaced by the calling service’s, so any information about them must be provided in the request rather than in the auth.

    • Default is ["bulkopsclient"]