# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # ### --- General broker settings --- ### # Zookeeper quorum connection string zookeeperServers={{ zookeeper_servers }} # Configuration Store connection string configurationStoreServers={{ zookeeper_servers }} # Broker data port brokerServicePort=6650 # Broker data port for TLS brokerServicePortTls=6651 # Port to use to server HTTP request webServicePort=8080 # Port to use to server HTTPS request webServicePortTls=8443 # Hostname or IP address the service binds on, default is 0.0.0.0. bindAddress=0.0.0.0 # Hostname or IP address the service advertises to the outside world. If not set, the value of InetAddress.getLocalHost().getHostName() is used. advertisedAddress={{ hostvars[inventory_hostname].private_ip }} # Used to specify multiple advertised listeners for the broker. # The value must format as :pulsar://:, # multiple listeners should separate with commas. # Do not use this configuration with advertisedAddress and brokerServicePort. # The Default value is absent means use advertisedAddress and brokerServicePort. # advertisedListeners= # Used to specify the internal listener name for the broker. # The listener name must contain in the advertisedListeners. # The Default value is absent, the broker uses the first listener as the internal listener. # internalListenerName= # Number of threads to use for Netty IO. Default is set to 2 * Runtime.getRuntime().availableProcessors() numIOThreads= # Number of threads to use for HTTP requests processing. Default is set to 2 * Runtime.getRuntime().availableProcessors() numHttpServerThreads= # Flag to control features that are meant to be used when running in standalone mode isRunningStandalone= # Name of the cluster to which this broker belongs to clusterName={{ cluster_name }} # Enable cluster's failure-domain which can distribute brokers into logical region failureDomainsEnabled=false # Zookeeper session timeout in milliseconds zooKeeperSessionTimeoutMillis=30000 # ZooKeeper operation timeout in seconds zooKeeperOperationTimeoutSeconds=30 # ZooKeeper cache expiry time in seconds zooKeeperCacheExpirySeconds=300 # Time to wait for broker graceful shutdown. After this time elapses, the process will be killed brokerShutdownTimeoutMs=60000 # Flag to skip broker shutdown when broker handles Out of memory error skipBrokerShutdownOnOOM=false # Enable backlog quota check. Enforces action on topic when the quota is reached backlogQuotaCheckEnabled=true # How often to check for topics that have reached the quota backlogQuotaCheckIntervalInSeconds=60 # Default per-topic backlog quota limit, less than 0 means no limitation. default is -1. backlogQuotaDefaultLimitGB=-1 # Default backlog quota retention policy. Default is producer_request_hold # 'producer_request_hold' Policy which holds producer's send request until the resource becomes available (or holding times out) # 'producer_exception' Policy which throws javax.jms.ResourceAllocationException to the producer # 'consumer_backlog_eviction' Policy which evicts the oldest message from the slowest consumer's backlog backlogQuotaDefaultRetentionPolicy=producer_request_hold # Default ttl for namespaces if ttl is not already configured at namespace policies. (disable default-ttl with value 0) ttlDurationDefaultInSeconds=0 # Enable topic auto creation if new producer or consumer connected (disable auto creation with value false) allowAutoTopicCreation=true # The type of topic that is allowed to be automatically created.(partitioned/non-partitioned) allowAutoTopicCreationType=non-partitioned # Enable subscription auto creation if new consumer connected (disable auto creation with value false) allowAutoSubscriptionCreation=true # The number of partitioned topics that is allowed to be automatically created if allowAutoTopicCreationType is partitioned. defaultNumPartitions=1 # Enable the deletion of inactive topics brokerDeleteInactiveTopicsEnabled=true # How often to check for inactive topics brokerDeleteInactiveTopicsFrequencySeconds=60 # Set the inactive topic delete mode. Default is delete_when_no_subscriptions # 'delete_when_no_subscriptions' mode only delete the topic which has no subscriptions and no active producers # 'delete_when_subscriptions_caught_up' mode only delete the topic that all subscriptions has no backlogs(caught up) # and no active producers/consumers brokerDeleteInactiveTopicsMode=delete_when_no_subscriptions # Max duration of topic inactivity in seconds, default is not present # If not present, 'brokerDeleteInactiveTopicsFrequencySeconds' will be used # Topics that are inactive for longer than this value will be deleted brokerDeleteInactiveTopicsMaxInactiveDurationSeconds= # Max pending publish requests per connection to avoid keeping large number of pending # requests in memory. Default: 1000 maxPendingPublishdRequestsPerConnection=1000 # How frequently to proactively check and purge expired messages messageExpiryCheckIntervalInMinutes=5 # How long to delay rewinding cursor and dispatching messages when active consumer is changed activeConsumerFailoverDelayTimeMillis=1000 # How long to delete inactive subscriptions from last consuming # When it is 0, inactive subscriptions are not deleted automatically subscriptionExpirationTimeMinutes=0 # Enable subscription message redelivery tracker to send redelivery count to consumer (default is enabled) subscriptionRedeliveryTrackerEnabled=true # How frequently to proactively check and purge expired subscription subscriptionExpiryCheckIntervalInMinutes=5 # Enable Key_Shared subscription (default is enabled) subscriptionKeySharedEnable=true # On KeyShared subscriptions, with default AUTO_SPLIT mode, use splitting ranges or # consistent hashing to reassign keys to new consumers subscriptionKeySharedUseConsistentHashing=false # On KeyShared subscriptions, number of points in the consistent-hashing ring. # The higher the number, the more equal the assignment of keys to consumers subscriptionKeySharedConsistentHashingReplicaPoints=100 # Set the default behavior for message deduplication in the broker # This can be overridden per-namespace. If enabled, broker will reject # messages that were already stored in the topic brokerDeduplicationEnabled=false # Maximum number of producer information that it's going to be # persisted for deduplication purposes brokerDeduplicationMaxNumberOfProducers=10000 # Number of entries after which a dedup info snapshot is taken. # A larger interval will lead to fewer snapshots being taken, though it would # increase the topic recovery time when the entries published after the # snapshot need to be replayed. brokerDeduplicationEntriesInterval=1000 # Time of inactivity after which the broker will discard the deduplication information # relative to a disconnected producer. Default is 6 hours. brokerDeduplicationProducerInactivityTimeoutMinutes=360 # When a namespace is created without specifying the number of bundle, this # value will be used as the default defaultNumberOfNamespaceBundles=4 # Enable check for minimum allowed client library version clientLibraryVersionCheckEnabled=false # Path for the file used to determine the rotation status for the broker when responding # to service discovery health checks statusFilePath= # If true, (and ModularLoadManagerImpl is being used), the load manager will attempt to # use only brokers running the latest software version (to minimize impact to bundles) preferLaterVersions=false # Max number of unacknowledged messages allowed to receive messages by a consumer on a shared subscription. Broker will stop sending # messages to consumer once, this limit reaches until consumer starts acknowledging messages back. # Using a value of 0, is disabling unackeMessage limit check and consumer can receive messages without any restriction maxUnackedMessagesPerConsumer=50000 # Max number of unacknowledged messages allowed per shared subscription. Broker will stop dispatching messages to # all consumers of the subscription once this limit reaches until consumer starts acknowledging messages back and # unack count reaches to limit/2. Using a value of 0, is disabling unackedMessage-limit # check and dispatcher can dispatch messages without any restriction maxUnackedMessagesPerSubscription=200000 # Max number of unacknowledged messages allowed per broker. Once this limit reaches, broker will stop dispatching # messages to all shared subscription which has higher number of unack messages until subscriptions start # acknowledging messages back and unack count reaches to limit/2. Using a value of 0, is disabling # unackedMessage-limit check and broker doesn't block dispatchers maxUnackedMessagesPerBroker=0 # Once broker reaches maxUnackedMessagesPerBroker limit, it blocks subscriptions which has higher unacked messages # than this percentage limit and subscription will not receive any new messages until that subscription acks back # limit/2 messages maxUnackedMessagesPerSubscriptionOnBrokerBlocked=0.16 # Tick time to schedule task that checks topic publish rate limiting across all topics # Reducing to lower value can give more accuracy while throttling publish but # it uses more CPU to perform frequent check. (Disable publish throttling with value 0) topicPublisherThrottlingTickTimeMillis=10 # Tick time to schedule task that checks broker publish rate limiting across all topics # Reducing to lower value can give more accuracy while throttling publish but # it uses more CPU to perform frequent check. (Disable publish throttling with value 0) brokerPublisherThrottlingTickTimeMillis=50 # Max Rate(in 1 seconds) of Message allowed to publish for a broker if broker publish rate limiting enabled # (Disable message rate limit with value 0) brokerPublisherThrottlingMaxMessageRate=0 # Max Rate(in 1 seconds) of Byte allowed to publish for a broker if broker publish rate limiting enabled. # (Disable byte rate limit with value 0) brokerPublisherThrottlingMaxByteRate=0 # Too many subscribe requests from a consumer can cause broker rewinding consumer cursors and loading data from bookies, # hence causing high network bandwidth usage # When the positive value is set, broker will throttle the subscribe requests for one consumer. # Otherwise, the throttling will be disabled. The default value of this setting is 0 - throttling is disabled. subscribeThrottlingRatePerConsumer=0 # Rate period for {subscribeThrottlingRatePerConsumer}. Default is 30s. subscribeRatePeriodPerConsumerInSecond=30 # Default messages per second dispatch throttling-limit for every topic. Using a value of 0, is disabling default # message dispatch-throttling dispatchThrottlingRatePerTopicInMsg=0 # Default bytes per second dispatch throttling-limit for every topic. Using a value of 0, is disabling # default message-byte dispatch-throttling dispatchThrottlingRatePerTopicInByte=0 # Default number of message dispatching throttling-limit for a subscription. # Using a value of 0, is disabling default message dispatch-throttling. dispatchThrottlingRatePerSubscriptionInMsg=0 # Default number of message-bytes dispatching throttling-limit for a subscription. # Using a value of 0, is disabling default message-byte dispatch-throttling. dispatchThrottlingRatePerSubscriptionInByte=0 # Default messages per second dispatch throttling-limit for every replicator in replication. # Using a value of 0, is disabling replication message dispatch-throttling dispatchThrottlingRatePerReplicatorInMsg=0 # Default bytes per second dispatch throttling-limit for every replicator in replication. # Using a value of 0, is disabling replication message-byte dispatch-throttling dispatchThrottlingRatePerReplicatorInByte=0 # Dispatch rate-limiting relative to publish rate. # (Enabling flag will make broker to dynamically update dispatch-rate relatively to publish-rate: # throttle-dispatch-rate = (publish-rate + configured dispatch-rate). dispatchThrottlingRateRelativeToPublishRate=false # By default we enable dispatch-throttling for both caught up consumers as well as consumers who have # backlog. dispatchThrottlingOnNonBacklogConsumerEnabled=true # Max number of entries to read from bookkeeper. By default it is 100 entries. dispatcherMaxReadBatchSize=100 # Max size in bytes of entries to read from bookkeeper. By default it is 5MB. dispatcherMaxReadSizeBytes=5242880 # Min number of entries to read from bookkeeper. By default it is 1 entries. # When there is an error occurred on reading entries from bookkeeper, the broker # will backoff the batch size to this minimum number." dispatcherMinReadBatchSize=1 # Max number of entries to dispatch for a shared subscription. By default it is 20 entries. dispatcherMaxRoundRobinBatchSize=20 # Precise dispathcer flow control according to history message number of each entry preciseDispatcherFlowControl=false # Max number of concurrent lookup request broker allows to throttle heavy incoming lookup traffic maxConcurrentLookupRequest=50000 # Max number of concurrent topic loading request broker allows to control number of zk-operations maxConcurrentTopicLoadRequest=5000 # Max concurrent non-persistent message can be processed per connection maxConcurrentNonPersistentMessagePerConnection=1000 # Number of worker threads to serve non-persistent topic numWorkerThreadsForNonPersistentTopic=8 # Enable broker to load persistent topics enablePersistentTopics=true # Enable broker to load non-persistent topics enableNonPersistentTopics=true # Enable to run bookie along with broker enableRunBookieTogether=false # Enable to run bookie autorecovery along with broker enableRunBookieAutoRecoveryTogether=false # Max number of producers allowed to connect to topic. Once this limit reaches, Broker will reject new producers # until the number of connected producers decrease. # Using a value of 0, is disabling maxProducersPerTopic-limit check. maxProducersPerTopic=0 # Max number of consumers allowed to connect to topic. Once this limit reaches, Broker will reject new consumers # until the number of connected consumers decrease. # Using a value of 0, is disabling maxConsumersPerTopic-limit check. maxConsumersPerTopic=0 # Max number of consumers allowed to connect to subscription. Once this limit reaches, Broker will reject new consumers # until the number of connected consumers decrease. # Using a value of 0, is disabling maxConsumersPerSubscription-limit check. maxConsumersPerSubscription=0 # Max size of messages. maxMessageSize=5242880 # Interval between checks to see if topics with compaction policies need to be compacted brokerServiceCompactionMonitorIntervalInSeconds=60 # Whether to enable the delayed delivery for messages. # If disabled, messages will be immediately delivered and there will # be no tracking overhead. delayedDeliveryEnabled=true # Control the tick time for when retrying on delayed delivery, # affecting the accuracy of the delivery time compared to the scheduled time. # Default is 1 second. delayedDeliveryTickTimeMillis=1000 # Whether to enable acknowledge of batch local index. acknowledgmentAtBatchIndexLevelEnabled=false # Enable tracking of replicated subscriptions state across clusters. enableReplicatedSubscriptions=true # Frequency of snapshots for replicated subscriptions tracking. replicatedSubscriptionsSnapshotFrequencyMillis=1000 # Timeout for building a consistent snapshot for tracking replicated subscriptions state. replicatedSubscriptionsSnapshotTimeoutSeconds=30 # Max number of snapshot to be cached per subscription. replicatedSubscriptionsSnapshotMaxCachedPerSubscription=10 # Max memory size for broker handling messages sending from producers. # If the processing message size exceed this value, broker will stop read data # from the connection. The processing messages means messages are sends to broker # but broker have not send response to client, usually waiting to write to bookies. # It's shared across all the topics running in the same broker. # Use -1 to disable the memory limitation. Default is 1/2 of direct memory. maxMessagePublishBufferSizeInMB= # Interval between checks to see if message publish buffer size is exceed the max message publish buffer size # Use 0 or negative number to disable the max publish buffer limiting. messagePublishBufferCheckIntervalInMillis=100 # Check between intervals to see if consumed ledgers need to be trimmed # Use 0 or negative number to disable the check retentionCheckIntervalInSeconds=120 # Max number of partitions per partitioned topic # Use 0 or negative number to disable the check maxNumPartitionsPerPartitionedTopic=0 # There are two policies when zookeeper session expired happens, "shutdown" and "reconnect". # If uses "shutdown" policy, shutdown the broker when zookeeper session expired happens. # If uses "reconnect" policy, try to reconnect to zookeeper server and re-register metadata to zookeeper. # Node: the "reconnect" policy is an experiment feature zookeeperSessionExpiredPolicy=shutdown # Enable or disable system topic systemTopicEnabled=false # Enable or disable topic level policies, topic level policies depends on the system topic # Please enable the system topic first. topicLevelPoliciesEnabled=false ### --- Authentication --- ### # Role names that are treated as "proxy roles". If the broker sees a request with #role as proxyRoles - it will demand to see a valid original principal. proxyRoles= # If this flag is set then the broker authenticates the original Auth data # else it just accepts the originalPrincipal and authorizes it (if required). authenticateOriginalAuthData=false # Deprecated - Use webServicePortTls and brokerServicePortTls instead tlsEnabled=false # Tls cert refresh duration in seconds (set 0 to check on every new connection) tlsCertRefreshCheckDurationSec=300 # Path for the TLS certificate file tlsCertificateFilePath= # Path for the TLS private key file tlsKeyFilePath= # Path for the trusted TLS certificate file. # This cert is used to verify that any certs presented by connecting clients # are signed by a certificate authority. If this verification # fails, then the certs are untrusted and the connections are dropped. tlsTrustCertsFilePath= # Accept untrusted TLS certificate from client. # If true, a client with a cert which cannot be verified with the # 'tlsTrustCertsFilePath' cert will allowed to connect to the server, # though the cert will not be used for client authentication. tlsAllowInsecureConnection=false # Specify the tls protocols the broker will use to negotiate during TLS handshake # (a comma-separated list of protocol names). # Examples:- [TLSv1.2, TLSv1.1, TLSv1] tlsProtocols= # Specify the tls cipher the broker will use to negotiate during TLS Handshake # (a comma-separated list of ciphers). # Examples:- [TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256] tlsCiphers= # Trusted client certificates are required for to connect TLS # Reject the Connection if the Client Certificate is not trusted. # In effect, this requires that all connecting clients perform TLS client # authentication. tlsRequireTrustedClientCertOnConnect=false ### --- KeyStore TLS config variables --- ### # Enable TLS with KeyStore type configuration in broker. tlsEnabledWithKeyStore=false # TLS Provider for KeyStore type tlsProvider= # TLS KeyStore type configuration in broker: JKS, PKCS12 tlsKeyStoreType=JKS # TLS KeyStore path in broker tlsKeyStore= # TLS KeyStore password for broker tlsKeyStorePassword= # TLS TrustStore type configuration in broker: JKS, PKCS12 tlsTrustStoreType=JKS # TLS TrustStore path in broker tlsTrustStore= # TLS TrustStore password in broker tlsTrustStorePassword= # Whether internal client use KeyStore type to authenticate with Pulsar brokers brokerClientTlsEnabledWithKeyStore=false # The TLS Provider used by internal client to authenticate with other Pulsar brokers brokerClientSslProvider= # TLS TrustStore type configuration for internal client: JKS, PKCS12 # used by the internal client to authenticate with Pulsar brokers brokerClientTlsTrustStoreType=JKS # TLS TrustStore path for internal client # used by the internal client to authenticate with Pulsar brokers brokerClientTlsTrustStore= # TLS TrustStore password for internal client, # used by the internal client to authenticate with Pulsar brokers brokerClientTlsTrustStorePassword= # Specify the tls cipher the internal client will use to negotiate during TLS Handshake # (a comma-separated list of ciphers) # e.g. [TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]. # used by the internal client to authenticate with Pulsar brokers brokerClientTlsCiphers= # Specify the tls protocols the broker will use to negotiate during TLS handshake # (a comma-separated list of protocol names). # e.g. [TLSv1.2, TLSv1.1, TLSv1] # used by the internal client to authenticate with Pulsar brokers brokerClientTlsProtocols= ### --- Authentication --- ### # Enable authentication authenticationEnabled=false # Autentication provider name list, which is comma separated list of class names authenticationProviders= # Interval of time for checking for expired authentication credentials authenticationRefreshCheckSeconds=60 # Enforce authorization authorizationEnabled=false # Authorization provider fully qualified class-name authorizationProvider=org.apache.pulsar.broker.authorization.PulsarAuthorizationProvider # Allow wildcard matching in authorization # (wildcard matching only applicable if wildcard-char: # * presents at first or last position eg: *.pulsar.service, pulsar.service.*) authorizationAllowWildcardsMatching=false # Role names that are treated as "super-user", meaning they will be able to do all admin # operations and publish/consume from all topics superUserRoles= # Authentication settings of the broker itself. Used when the broker connects to other brokers, # either in same or other clusters brokerClientTlsEnabled=false brokerClientAuthenticationPlugin= brokerClientAuthenticationParameters= brokerClientTrustCertsFilePath= # Supported Athenz provider domain names(comma separated) for authentication athenzDomainNames= # When this parameter is not empty, unauthenticated users perform as anonymousUserRole anonymousUserRole= ### --- Token Authentication Provider --- ### ## Symmetric key # Configure the secret key to be used to validate auth tokens # The key can be specified like: # tokenSecretKey=data:;base64,xxxxxxxxx # tokenSecretKey=file:///my/secret.key tokenSecretKey= ## Asymmetric public/private key pair # Configure the public key to be used to validate auth tokens # The key can be specified like: # tokenPublicKey=data:;base64,xxxxxxxxx # tokenPublicKey=file:///my/public.key tokenPublicKey= # The token "claim" that will be interpreted as the authentication "role" or "principal" by AuthenticationProviderToken (defaults to "sub" if blank) tokenAuthClaim= # The token audience "claim" name, e.g. "aud", that will be used to get the audience from token. # If not set, audience will not be verified. tokenAudienceClaim= # The token audience stands for this broker. The field `tokenAudienceClaim` of a valid token, need contains this. tokenAudience= ### --- SASL Authentication Provider --- ### # This is a regexp, which limits the range of possible ids which can connect to the Broker using SASL. # Default value: `SaslConstants.JAAS_CLIENT_ALLOWED_IDS_DEFAULT`, which is ".*pulsar.*", # so only clients whose id contains 'pulsar' are allowed to connect. saslJaasClientAllowedIds= # Service Principal, for login context name. # Default value `SaslConstants.JAAS_DEFAULT_BROKER_SECTION_NAME`, which is "Broker". saslJaasBrokerSectionName= ### --- HTTP Server config --- ### # If >0, it will reject all HTTP requests with bodies larged than the configured limit httpMaxRequestSize=-1 ### --- BookKeeper Client --- ### # Metadata service uri that bookkeeper is used for loading corresponding metadata driver # and resolving its metadata service location. # This value can be fetched using `bookkeeper shell whatisinstanceid` command in BookKeeper cluster. # For example: zk+hierarchical://localhost:2181/ledgers # The metadata service uri list can also be semicolon separated values like below: # zk+hierarchical://zk1:2181;zk2:2181;zk3:2181/ledgers bookkeeperMetadataServiceUri= # Authentication plugin to use when connecting to bookies bookkeeperClientAuthenticationPlugin= # BookKeeper auth plugin implementatation specifics parameters name and values bookkeeperClientAuthenticationParametersName= bookkeeperClientAuthenticationParameters= # Timeout for BK add / read operations bookkeeperClientTimeoutInSeconds=30 # Speculative reads are initiated if a read request doesn't complete within a certain time # Using a value of 0, is disabling the speculative reads bookkeeperClientSpeculativeReadTimeoutInMillis=0 # Use older Bookkeeper wire protocol with bookie bookkeeperUseV2WireProtocol=true # Enable bookies health check. Bookies that have more than the configured number of failure within # the interval will be quarantined for some time. During this period, new ledgers won't be created # on these bookies bookkeeperClientHealthCheckEnabled=true bookkeeperClientHealthCheckIntervalSeconds=60 bookkeeperClientHealthCheckErrorThresholdPerInterval=5 bookkeeperClientHealthCheckQuarantineTimeInSeconds=1800 # Specify options for the GetBookieInfo check. These settings can be useful # to help ensure the list of bookies is up to date on the brokers. bookkeeperGetBookieInfoIntervalSeconds=86400 bookkeeperGetBookieInfoRetryIntervalSeconds=60 # Enable rack-aware bookie selection policy. BK will chose bookies from different racks when # forming a new bookie ensemble bookkeeperClientRackawarePolicyEnabled=true # Enable region-aware bookie selection policy. BK will chose bookies from # different regions and racks when forming a new bookie ensemble # If enabled, the value of bookkeeperClientRackawarePolicyEnabled is ignored bookkeeperClientRegionawarePolicyEnabled=false # Minimum number of racks per write quorum. BK rack-aware bookie selection policy will try to # get bookies from at least 'bookkeeperClientMinNumRacksPerWriteQuorum' racks for a write quorum. bookkeeperClientMinNumRacksPerWriteQuorum=2 # Enforces rack-aware bookie selection policy to pick bookies from 'bookkeeperClientMinNumRacksPerWriteQuorum' # racks for a writeQuorum. # If BK can't find bookie then it would throw BKNotEnoughBookiesException instead of picking random one. bookkeeperClientEnforceMinNumRacksPerWriteQuorum=false # Enable/disable reordering read sequence on reading entries. bookkeeperClientReorderReadSequenceEnabled=false # Enable bookie isolation by specifying a list of bookie groups to choose from. Any bookie # outside the specified groups will not be used by the broker bookkeeperClientIsolationGroups= # Enable bookie secondary-isolation group if bookkeeperClientIsolationGroups doesn't # have enough bookie available. bookkeeperClientSecondaryIsolationGroups= # Minimum bookies that should be available as part of bookkeeperClientIsolationGroups # else broker will include bookkeeperClientSecondaryIsolationGroups bookies in isolated list. bookkeeperClientMinAvailableBookiesInIsolationGroups= # Enable/disable having read operations for a ledger to be sticky to a single bookie. # If this flag is enabled, the client will use one single bookie (by preference) to read # all entries for a ledger. # # Disable Sticy Read until {@link https://github.com/apache/bookkeeper/issues/1970} is fixed bookkeeperEnableStickyReads=false # Set the client security provider factory class name. # Default: org.apache.bookkeeper.tls.TLSContextFactory bookkeeperTLSProviderFactoryClass=org.apache.bookkeeper.tls.TLSContextFactory # Enable tls authentication with bookie bookkeeperTLSClientAuthentication=false # Supported type: PEM, JKS, PKCS12. Default value: PEM bookkeeperTLSKeyFileType=PEM #Supported type: PEM, JKS, PKCS12. Default value: PEM bookkeeperTLSTrustCertTypes=PEM # Path to file containing keystore password, if the client keystore is password protected. bookkeeperTLSKeyStorePasswordPath= # Path to file containing truststore password, if the client truststore is password protected. bookkeeperTLSTrustStorePasswordPath= # Path for the TLS private key file bookkeeperTLSKeyFilePath= # Path for the TLS certificate file bookkeeperTLSCertificateFilePath= # Path for the trusted TLS certificate file bookkeeperTLSTrustCertsFilePath= # Enable/disable disk weight based placement. Default is false bookkeeperDiskWeightBasedPlacementEnabled=false # Set the interval to check the need for sending an explicit LAC # A value of '0' disables sending any explicit LACs. Default is 0. bookkeeperExplicitLacIntervalInMills=0 # Expose bookkeeper client managed ledger stats to prometheus. default is false # bookkeeperClientExposeStatsToPrometheus=false ### --- Managed Ledger --- ### # Number of bookies to use when creating a ledger managedLedgerDefaultEnsembleSize=2 # Number of copies to store for each message managedLedgerDefaultWriteQuorum=2 # Number of guaranteed copies (acks to wait before write is complete) managedLedgerDefaultAckQuorum=2 # Default type of checksum to use when writing to BookKeeper. Default is "CRC32C" # Other possible options are "CRC32", "MAC" or "DUMMY" (no checksum). managedLedgerDigestType=CRC32C # Number of threads to be used for managed ledger tasks dispatching managedLedgerNumWorkerThreads=8 # Number of threads to be used for managed ledger scheduled tasks managedLedgerNumSchedulerThreads=8 # Amount of memory to use for caching data payload in managed ledger. This memory # is allocated from JVM direct memory and it's shared across all the topics # running in the same broker. By default, uses 1/5th of available direct memory managedLedgerCacheSizeMB= # Whether we should make a copy of the entry payloads when inserting in cache managedLedgerCacheCopyEntries=false # Threshold to which bring down the cache level when eviction is triggered managedLedgerCacheEvictionWatermark=0.9 # Configure the cache eviction frequency for the managed ledger cache (evictions/sec) managedLedgerCacheEvictionFrequency=100.0 # All entries that have stayed in cache for more than the configured time, will be evicted managedLedgerCacheEvictionTimeThresholdMillis=1000 # Configure the threshold (in number of entries) from where a cursor should be considered 'backlogged' # and thus should be set as inactive. managedLedgerCursorBackloggedThreshold=1000 # Rate limit the amount of writes per second generated by consumer acking the messages managedLedgerDefaultMarkDeleteRateLimit=1.0 # Max number of entries to append to a ledger before triggering a rollover # A ledger rollover is triggered on these conditions # * Either the max rollover time has been reached # * or max entries have been written to the ledged and at least min-time # has passed managedLedgerMaxEntriesPerLedger=50000 # Minimum time between ledger rollover for a topic managedLedgerMinLedgerRolloverTimeMinutes=10 # Maximum time before forcing a ledger rollover for a topic managedLedgerMaxLedgerRolloverTimeMinutes=240 # Maximum ledger size before triggering a rollover for a topic (MB) managedLedgerMaxSizePerLedgerMbytes=2048 # Delay between a ledger being successfully offloaded to long term storage # and the ledger being deleted from bookkeeper (default is 4 hours) managedLedgerOffloadDeletionLagMs=14400000 # The number of bytes before triggering automatic offload to long term storage # (default is -1, which is disabled) managedLedgerOffloadAutoTriggerSizeThresholdBytes=-1 # Max number of entries to append to a cursor ledger managedLedgerCursorMaxEntriesPerLedger=50000 # Max time before triggering a rollover on a cursor ledger managedLedgerCursorRolloverTimeInSeconds=14400 # Max number of "acknowledgment holes" that are going to be persistently stored. # When acknowledging out of order, a consumer will leave holes that are supposed # to be quickly filled by acking all the messages. The information of which # messages are acknowledged is persisted by compressing in "ranges" of messages # that were acknowledged. After the max number of ranges is reached, the information # will only be tracked in memory and messages will be redelivered in case of # crashes. managedLedgerMaxUnackedRangesToPersist=10000 # Max number of "acknowledgment holes" that can be stored in Zookeeper. If number of unack message range is higher # than this limit then broker will persist unacked ranges into bookkeeper to avoid additional data overhead into # zookeeper. managedLedgerMaxUnackedRangesToPersistInZooKeeper=1000 # Skip reading non-recoverable/unreadable data-ledger under managed-ledger's list. It helps when data-ledgers gets # corrupted at bookkeeper and managed-cursor is stuck at that ledger. autoSkipNonRecoverableData=false # operation timeout while updating managed-ledger metadata. managedLedgerMetadataOperationsTimeoutSeconds=60 # Read entries timeout when broker tries to read messages from bookkeeper. managedLedgerReadEntryTimeoutSeconds=0 # Add entry timeout when broker tries to publish message to bookkeeper (0 to disable it). managedLedgerAddEntryTimeoutSeconds=0 # Managed ledger prometheus stats latency rollover seconds (default: 60s) managedLedgerPrometheusStatsLatencyRolloverSeconds=60 # Whether trace managed ledger task execution time managedLedgerTraceTaskExecution=true # New entries check delay for the cursor under the managed ledger. # If no new messages in the topic, the cursor will try to check again after the delay time. # For consumption latency sensitive scenario, can set to a smaller value or set to 0. # Of course, use a smaller value may degrade consumption throughput. Default is 10ms. managedLedgerNewEntriesCheckDelayInMillis=10 ### --- Load balancer --- ### # Enable load balancer loadBalancerEnabled=true # Percentage of change to trigger load report update loadBalancerReportUpdateThresholdPercentage=10 # maximum interval to update load report loadBalancerReportUpdateMaxIntervalMinutes=15 # Frequency of report to collect loadBalancerHostUsageCheckIntervalMinutes=1 # Enable/disable automatic bundle unloading for load-shedding loadBalancerSheddingEnabled=true # Load shedding interval. Broker periodically checks whether some traffic should be offload from # some over-loaded broker to other under-loaded brokers loadBalancerSheddingIntervalMinutes=1 # Prevent the same topics to be shed and moved to other broker more that once within this timeframe loadBalancerSheddingGracePeriodMinutes=30 # Usage threshold to allocate max number of topics to broker loadBalancerBrokerMaxTopics=50000 # Usage threshold to determine a broker as over-loaded loadBalancerBrokerOverloadedThresholdPercentage=85 # Interval to flush dynamic resource quota to ZooKeeper loadBalancerResourceQuotaUpdateIntervalMinutes=15 # enable/disable namespace bundle auto split loadBalancerAutoBundleSplitEnabled=true # enable/disable automatic unloading of split bundles loadBalancerAutoUnloadSplitBundlesEnabled=true # maximum topics in a bundle, otherwise bundle split will be triggered loadBalancerNamespaceBundleMaxTopics=1000 # maximum sessions (producers + consumers) in a bundle, otherwise bundle split will be triggered loadBalancerNamespaceBundleMaxSessions=1000 # maximum msgRate (in + out) in a bundle, otherwise bundle split will be triggered loadBalancerNamespaceBundleMaxMsgRate=30000 # maximum bandwidth (in + out) in a bundle, otherwise bundle split will be triggered loadBalancerNamespaceBundleMaxBandwidthMbytes=100 # maximum number of bundles in a namespace loadBalancerNamespaceMaximumBundles=128 # Override the auto-detection of the network interfaces max speed. # This option is useful in some environments (eg: EC2 VMs) where the max speed # reported by Linux is not reflecting the real bandwidth available to the broker. # Since the network usage is employed by the load manager to decide when a broker # is overloaded, it is important to make sure the info is correct or override it # with the right value here. The configured value can be a double (eg: 0.8) and that # can be used to trigger load-shedding even before hitting on NIC limits. loadBalancerOverrideBrokerNicSpeedGbps= # Name of load manager to use loadManagerClassName=org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerImpl # Supported algorithms name for namespace bundle split. # "range_equally_divide" divides the bundle into two parts with the same hash range size. # "topic_count_equally_divide" divides the bundle into two parts with the same topics count. supportedNamespaceBundleSplitAlgorithms=range_equally_divide,topic_count_equally_divide # Default algorithm name for namespace bundle split defaultNamespaceBundleSplitAlgorithm=range_equally_divide # load shedding strategy, support OverloadShedder and ThresholdShedder, default is OverloadShedder loadBalancerLoadSheddingStrategy=org.apache.pulsar.broker.loadbalance.impl.OverloadShedder # The broker resource usage threshold. # When the broker resource usage is gratter than the pulsar cluster average resource usge, # the threshold shedder will be triggered to offload bundles from the broker. # It only take effect in ThresholdSheddler strategy. loadBalancerBrokerThresholdShedderPercentage=10 # When calculating new resource usage, the history usage accounts for. # It only take effect in ThresholdSheddler strategy. loadBalancerHistoryResourcePercentage=0.9 # The BandWithIn usage weight when calculating new resourde usage. # It only take effect in ThresholdShedder strategy. loadBalancerBandwithInResourceWeight=1.0 # The BandWithOut usage weight when calculating new resourde usage. # It only take effect in ThresholdShedder strategy. loadBalancerBandwithOutResourceWeight=1.0 # The CPU usage weight when calculating new resourde usage. # It only take effect in ThresholdShedder strategy. loadBalancerCPUResourceWeight=1.0 # The heap memory usage weight when calculating new resourde usage. # It only take effect in ThresholdShedder strategy. loadBalancerMemoryResourceWeight=1.0 # The direct memory usage weight when calculating new resourde usage. # It only take effect in ThresholdShedder strategy. loadBalancerDirectMemoryResourceWeight=1.0 # Bundle unload minimum throughput threshold (MB), avoding bundle unload frequently. # It only take effect in ThresholdShedder strategy. loadBalancerBundleUnloadMinThroughputThreshold=10 ### --- Replication --- ### # Enable replication metrics replicationMetricsEnabled=true # Max number of connections to open for each broker in a remote cluster # More connections host-to-host lead to better throughput over high-latency # links. replicationConnectionsPerBroker=16 # Replicator producer queue size replicationProducerQueueSize=1000 # Replicator prefix used for replicator producer name and cursor name replicatorPrefix=pulsar.repl # Duration to check replication policy to avoid replicator inconsistency # due to missing ZooKeeper watch (disable with value 0) replicatioPolicyCheckDurationSeconds=600 # Default message retention time defaultRetentionTimeInMinutes=0 # Default retention size defaultRetentionSizeInMB=0 # How often to check whether the connections are still alive keepAliveIntervalSeconds=30 # bootstrap namespaces bootstrapNamespaces= ### --- WebSocket --- ### # Enable the WebSocket API service in broker webSocketServiceEnabled=false # Number of IO threads in Pulsar Client used in WebSocket proxy webSocketNumIoThreads=8 # Number of connections per Broker in Pulsar Client used in WebSocket proxy webSocketConnectionsPerBroker=8 # Time in milliseconds that idle WebSocket session times out webSocketSessionIdleTimeoutMillis=300000 # The maximum size of a text message during parsing in WebSocket proxy webSocketMaxTextFrameSize=1048576 ### --- Metrics --- ### # Enable topic level metrics exposeTopicLevelMetricsInPrometheus=true # Enable consumer level metrics. default is false exposeConsumerLevelMetricsInPrometheus=false # Classname of Pluggable JVM GC metrics logger that can log GC specific metrics # jvmGCMetricsLoggerClassName= ### --- Functions --- ### # Enable Functions Worker Service in Broker functionsWorkerEnabled=false ### --- Broker Web Stats --- ### # Enable topic level metrics exposePublisherStats=true statsUpdateFrequencyInSecs=60 statsUpdateInitialDelayInSecs=60 # Enable expose the precise backlog stats. # Set false to use published counter and consumed counter to calculate, this would be more efficient but may be inaccurate. # Default is false. exposePreciseBacklogInPrometheus=false ### --- Schema storage --- ### # The schema storage implementation used by this broker schemaRegistryStorageClassName=org.apache.pulsar.broker.service.schema.BookkeeperSchemaStorageFactory # Enforce schema validation on following cases: # # - if a producer without a schema attempts to produce to a topic with schema, the producer will be # failed to connect. PLEASE be carefully on using this, since non-java clients don't support schema. # if you enable this setting, it will cause non-java clients failed to produce. isSchemaValidationEnforced=false ### --- Ledger Offloading --- ### # The directory for all the offloader implementations offloadersDirectory=./offloaders # Driver to use to offload old data to long term storage (Possible values: S3, aws-s3, google-cloud-storage) # When using google-cloud-storage, Make sure both Google Cloud Storage and Google Cloud Storage JSON API are enabled for # the project (check from Developers Console -> Api&auth -> APIs). managedLedgerOffloadDriver= # Maximum number of thread pool threads for ledger offloading managedLedgerOffloadMaxThreads=2 # Maximum prefetch rounds for ledger reading for offloading managedLedgerOffloadPrefetchRounds=1 # Use Open Range-Set to cache unacked messages managedLedgerUnackedRangesOpenCacheSetEnabled=true # For Amazon S3 ledger offload, AWS region s3ManagedLedgerOffloadRegion= # For Amazon S3 ledger offload, Bucket to place offloaded ledger into s3ManagedLedgerOffloadBucket= # For Amazon S3 ledger offload, Alternative endpoint to connect to (useful for testing) s3ManagedLedgerOffloadServiceEndpoint= # For Amazon S3 ledger offload, Max block size in bytes. (64MB by default, 5MB minimum) s3ManagedLedgerOffloadMaxBlockSizeInBytes=67108864 # For Amazon S3 ledger offload, Read buffer size in bytes (1MB by default) s3ManagedLedgerOffloadReadBufferSizeInBytes=1048576 # For Google Cloud Storage ledger offload, region where offload bucket is located. # reference this page for more details: https://cloud.google.com/storage/docs/bucket-locations gcsManagedLedgerOffloadRegion= # For Google Cloud Storage ledger offload, Bucket to place offloaded ledger into gcsManagedLedgerOffloadBucket= # For Google Cloud Storage ledger offload, Max block size in bytes. (64MB by default, 5MB minimum) gcsManagedLedgerOffloadMaxBlockSizeInBytes=67108864 # For Google Cloud Storage ledger offload, Read buffer size in bytes (1MB by default) gcsManagedLedgerOffloadReadBufferSizeInBytes=1048576 # For Google Cloud Storage, path to json file containing service account credentials. # For more details, see the "Service Accounts" section of https://support.google.com/googleapi/answer/6158849 gcsManagedLedgerOffloadServiceAccountKeyFile= #For File System Storage, file system profile path fileSystemProfilePath=../conf/filesystem_offload_core_site.xml #For File System Storage, file system uri fileSystemURI= ### --- Deprecated config variables --- ### # Deprecated. Use configurationStoreServers globalZookeeperServers={{ zookeeper_servers }} # Deprecated - Enable TLS when talking with other clusters to replicate messages replicationTlsEnabled=false # Deprecated. Use brokerDeleteInactiveTopicsFrequencySeconds brokerServicePurgeInactiveFrequencyInSeconds=60 ### --- Transaction config variables --- ### # Enable transaction coordinator in broker transactionCoordinatorEnabled=true transactionMetadataStoreProviderClassName=org.apache.pulsar.transaction.coordinator.impl.InMemTransactionMetadataStoreProvider