/** * Copyright 2016 Yahoo Inc. * * Licensed 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. */ package com.yahoo.pulsar.broker; import java.util.ArrayList; import java.util.List; import java.util.Properties; import java.util.Set; import com.google.common.collect.Sets; import com.yahoo.pulsar.client.impl.auth.AuthenticationDisabled; import com.yahoo.pulsar.common.configuration.FieldContext; import com.yahoo.pulsar.common.configuration.PulsarConfiguration; /** * * Pulsar service configuration object. * */ public class ServiceConfiguration implements PulsarConfiguration { /***** --- pulsar configuration --- ****/ // Zookeeper quorum connection string @FieldContext(required = true) private String zookeeperServers; // Global Zookeeper quorum connection string @FieldContext(required = false) private String globalZookeeperServers; private int brokerServicePort = 6650; private int brokerServicePortTls = 6651; // Port to use to server HTTP request private int webServicePort = 8080; // Port to use to server HTTPS request private int webServicePortTls = 8443; // Hostname or IP address the service binds on. private String bindAddress = "0.0.0.0"; // Controls which hostname is advertised to the discovery service via ZooKeeper. private String advertisedAddress; // Enable the WebSocket API service private boolean webSocketServiceEnabled = false; // Name of the cluster to which this broker belongs to @FieldContext(required = true) private String clusterName; // Zookeeper session timeout in milliseconds private long zooKeeperSessionTimeoutMillis = 30000; // Time to wait for broker graceful shutdown. After this time elapses, the // process will be killed @FieldContext(dynamic = true) private long brokerShutdownTimeoutMs = 3000; // Enable backlog quota check. Enforces action on topic when the quota is // reached private boolean backlogQuotaCheckEnabled = true; // How often to check for topics that have reached the quota private int backlogQuotaCheckIntervalInSeconds = 60; // Default per-topic backlog quota limit private long backlogQuotaDefaultLimitGB = 50; // Enable the deletion of inactive topics private boolean brokerDeleteInactiveTopicsEnabled = true; // How often to check for inactive topics private long brokerDeleteInactiveTopicsFrequencySeconds = 60; // How frequently to proactively check and purge expired messages private int messageExpiryCheckIntervalInMinutes = 5; // Enable check for minimum allowed client library version private boolean clientLibraryVersionCheckEnabled = false; // Allow client libraries with no version information private boolean clientLibraryVersionCheckAllowUnversioned = true; // Path for the file used to determine the rotation status for the broker // when responding to service discovery health checks private String statusFilePath; // 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 // and unack count reaches to maxUnackedMessagesPerConsumer/2 Using a value of 0, is disabling unackedMessage-limit // check and consumer can receive messages without any restriction private int 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 private int maxUnackedMessagesPerSubscription = 4 * 50000; // Max number of concurrent lookup request broker allows to throttle heavy incoming lookup traffic @FieldContext(dynamic = true) private int maxConcurrentLookupRequest = 10000; // Max number of concurrent topic loading request broker allows to control number of zk-operations @FieldContext(dynamic = true) private int maxConcurrentTopicLoadRequest = 5000; /***** --- TLS --- ****/ // Enable TLS private boolean tlsEnabled = false; // Path for the TLS certificate file private String tlsCertificateFilePath; // Path for the TLS private key file private String tlsKeyFilePath; // Path for the trusted TLS certificate file private String tlsTrustCertsFilePath = ""; // Accept untrusted TLS certificate from client private boolean tlsAllowInsecureConnection = false; /***** --- Authentication --- ****/ // Enable authentication private boolean authenticationEnabled = false; // Autentication provider name list, which is a list of class names private Set<String> authenticationProviders = Sets.newTreeSet(); // Enforce authorization private boolean authorizationEnabled = 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 private Set<String> superUserRoles = Sets.newTreeSet(); // Authentication settings of the broker itself. Used when the broker connects // to other brokers, either in same or other clusters private String brokerClientAuthenticationPlugin = AuthenticationDisabled.class.getName(); private String brokerClientAuthenticationParameters = ""; /**** --- BookKeeper Client --- ****/ // Authentication plugin to use when connecting to bookies private String bookkeeperClientAuthenticationPlugin; // BookKeeper auth plugin implementatation specifics parameters name and values private String bookkeeperClientAuthenticationParametersName; private String bookkeeperClientAuthenticationParameters; // Timeout for BK add / read operations private long 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 private int bookkeeperClientSpeculativeReadTimeoutInMillis = 0; // 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 private boolean bookkeeperClientHealthCheckEnabled = true; private long bookkeeperClientHealthCheckIntervalSeconds = 60; private long bookkeeperClientHealthCheckErrorThresholdPerInterval = 5; private long bookkeeperClientHealthCheckQuarantineTimeInSeconds = 1800; // Enable rack-aware bookie selection policy. BK will chose bookies from // different racks when forming a new bookie ensemble private boolean bookkeeperClientRackawarePolicyEnabled = true; // 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 @FieldContext(required = false) private String bookkeeperClientIsolationGroups; /**** --- Managed Ledger --- ****/ // Number of bookies to use when creating a ledger @FieldContext(minValue = 1) private int managedLedgerDefaultEnsembleSize = 1; // Number of copies to store for each message @FieldContext(minValue = 1) private int managedLedgerDefaultWriteQuorum = 1; // Number of guaranteed copies (acks to wait before write is complete) @FieldContext(minValue = 1) private int managedLedgerDefaultAckQuorum = 1; // 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 private int managedLedgerCacheSizeMB = 1024; // Threshold to which bring down the cache level when eviction is triggered private double managedLedgerCacheEvictionWatermark = 0.9f; // Rate limit the amount of writes per second generated by consumer acking the messages private double 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 private int managedLedgerMaxEntriesPerLedger = 50000; // Minimum time between ledger rollover for a topic private int managedLedgerMinLedgerRolloverTimeMinutes = 10; // Maximum time before forcing a ledger rollover for a topic private int managedLedgerMaxLedgerRolloverTimeMinutes = 240; // Max number of entries to append to a cursor ledger private int managedLedgerCursorMaxEntriesPerLedger = 50000; // Max time before triggering a rollover on a cursor ledger private int 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. private int managedLedgerMaxUnackedRangesToPersist = 1000; /*** --- Load balancer --- ****/ // Enable load balancer private boolean loadBalancerEnabled = false; // load placement strategy private String loadBalancerPlacementStrategy = "weightedRandomSelection"; // weighted random selection // Percentage of change to trigger load report update private int loadBalancerReportUpdateThresholdPercentage = 10; // maximum interval to update load report private int loadBalancerReportUpdateMaxIntervalMinutes = 15; // Frequency of report to collect private int loadBalancerHostUsageCheckIntervalMinutes = 1; // Load shedding interval. Broker periodically checks whether some traffic // should be offload from // some over-loaded broker to other under-loaded brokers private int loadBalancerSheddingIntervalMinutes = 30; // Prevent the same topics to be shed and moved to other broker more that // once within this timeframe private long loadBalancerSheddingGracePeriodMinutes = 30; // Usage threshold to determine a broker as under-loaded private int loadBalancerBrokerUnderloadedThresholdPercentage = 50; // Usage threshold to determine a broker as over-loaded private int loadBalancerBrokerOverloadedThresholdPercentage = 85; // interval to flush dynamic resource quota to ZooKeeper private int loadBalancerResourceQuotaUpdateIntervalMinutes = 15; // Usage threshold to defermine a broker is having just right level of load private int loadBalancerBrokerComfortLoadLevelPercentage = 65; // enable/disable automatic namespace bundle split private boolean loadBalancerAutoBundleSplitEnabled = false; // maximum topics in a bundle, otherwise bundle split will be triggered private int loadBalancerNamespaceBundleMaxTopics = 1000; // maximum sessions (producers + consumers) in a bundle, otherwise bundle split will be triggered private int loadBalancerNamespaceBundleMaxSessions = 1000; // maximum msgRate (in + out) in a bundle, otherwise bundle split will be triggered private int loadBalancerNamespaceBundleMaxMsgRate = 1000; // maximum bandwidth (in + out) in a bundle, otherwise bundle split will be triggered private int loadBalancerNamespaceBundleMaxBandwidthMbytes = 100; // maximum number of bundles in a namespace private int loadBalancerNamespaceMaximumBundles = 128; /**** --- Replication --- ****/ // Enable replication metrics private boolean replicationMetricsEnabled = false; // 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. private int replicationConnectionsPerBroker = 16; @FieldContext(required = false) // replicator prefix used for replicator producer name and cursor name private String replicatorPrefix = "pulsar.repl"; // Replicator producer queue size; private int replicationProducerQueueSize = 1000; // Default message retention time private int defaultRetentionTimeInMinutes = 0; // Default retention size private int defaultRetentionSizeInMB = 0; // How often to check pulsar connection is still alive private int keepAliveIntervalSeconds = 30; // How often broker checks for inactive topics to be deleted (topics with no subscriptions and no one connected) private int brokerServicePurgeInactiveFrequencyInSeconds = 60; private List<String> bootstrapNamespaces = new ArrayList<String>(); private Properties properties = new Properties(); // Name of load manager to use @FieldContext(dynamic = true) private String loadManagerClassName = "com.yahoo.pulsar.broker.loadbalance.impl.SimpleLoadManagerImpl"; // 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) @FieldContext(dynamic = true) private boolean preferLaterVersions = false; public String getZookeeperServers() { return zookeeperServers; } public void setZookeeperServers(String zookeeperServers) { this.zookeeperServers = zookeeperServers; } public String getGlobalZookeeperServers() { if (this.globalZookeeperServers == null || this.globalZookeeperServers.isEmpty()) { // If the configuration is not set, assuming that the globalZK is not enabled and all data is in the same // ZooKeeper cluster return this.getZookeeperServers(); } return globalZookeeperServers; } public void setGlobalZookeeperServers(String globalZookeeperServers) { this.globalZookeeperServers = globalZookeeperServers; } public int getBrokerServicePort() { return brokerServicePort; } public void setBrokerServicePort(int brokerServicePort) { this.brokerServicePort = brokerServicePort; } public int getBrokerServicePortTls() { return brokerServicePortTls; } public void setBrokerServicePortTls(int brokerServicePortTls) { this.brokerServicePortTls = brokerServicePortTls; } public int getWebServicePort() { return webServicePort; } public void setWebServicePort(int webServicePort) { this.webServicePort = webServicePort; } public int getWebServicePortTls() { return webServicePortTls; } public void setWebServicePortTls(int webServicePortTls) { this.webServicePortTls = webServicePortTls; } public String getBindAddress() { return this.bindAddress; } public void setBindAddress(String bindAddress) { this.bindAddress = bindAddress; } public String getAdvertisedAddress() { return this.advertisedAddress; } public void setAdvertisedAddress(String advertisedAddress) { this.advertisedAddress = advertisedAddress; } public boolean isWebSocketServiceEnabled() { return webSocketServiceEnabled; } public void setWebSocketServiceEnabled(boolean webSocketServiceEnabled) { this.webSocketServiceEnabled = webSocketServiceEnabled; } public String getClusterName() { return clusterName; } public void setClusterName(String clusterName) { this.clusterName = clusterName; } public long getBrokerShutdownTimeoutMs() { return brokerShutdownTimeoutMs; } public void setBrokerShutdownTimeoutMs(long brokerShutdownTimeoutMs) { this.brokerShutdownTimeoutMs = brokerShutdownTimeoutMs; } public boolean isBacklogQuotaCheckEnabled() { return backlogQuotaCheckEnabled; } public void setBacklogQuotaCheckEnabled(boolean backlogQuotaCheckEnabled) { this.backlogQuotaCheckEnabled = backlogQuotaCheckEnabled; } public int getBacklogQuotaCheckIntervalInSeconds() { return backlogQuotaCheckIntervalInSeconds; } public void setBacklogQuotaCheckIntervalInSeconds(int backlogQuotaCheckIntervalInSeconds) { this.backlogQuotaCheckIntervalInSeconds = backlogQuotaCheckIntervalInSeconds; } public long getBacklogQuotaDefaultLimitGB() { return backlogQuotaDefaultLimitGB; } public void setBacklogQuotaDefaultLimitGB(long backlogQuotaDefaultLimitGB) { this.backlogQuotaDefaultLimitGB = backlogQuotaDefaultLimitGB; } public boolean isBrokerDeleteInactiveTopicsEnabled() { return brokerDeleteInactiveTopicsEnabled; } public void setBrokerDeleteInactiveTopicsEnabled(boolean brokerDeleteInactiveTopicsEnabled) { this.brokerDeleteInactiveTopicsEnabled = brokerDeleteInactiveTopicsEnabled; } public long getBrokerDeleteInactiveTopicsFrequencySeconds() { return brokerDeleteInactiveTopicsFrequencySeconds; } public void setBrokerDeleteInactiveTopicsFrequencySeconds(long brokerDeleteInactiveTopicsFrequencySeconds) { this.brokerDeleteInactiveTopicsFrequencySeconds = brokerDeleteInactiveTopicsFrequencySeconds; } public int getMessageExpiryCheckIntervalInMinutes() { return messageExpiryCheckIntervalInMinutes; } public void setMessageExpiryCheckIntervalInMinutes(int messageExpiryCheckIntervalInMinutes) { this.messageExpiryCheckIntervalInMinutes = messageExpiryCheckIntervalInMinutes; } public boolean isClientLibraryVersionCheckEnabled() { return clientLibraryVersionCheckEnabled; } public void setClientLibraryVersionCheckEnabled(boolean clientLibraryVersionCheckEnabled) { this.clientLibraryVersionCheckEnabled = clientLibraryVersionCheckEnabled; } public boolean isClientLibraryVersionCheckAllowUnversioned() { return clientLibraryVersionCheckAllowUnversioned; } public void setClientLibraryVersionCheckAllowUnversioned(boolean clientLibraryVersionCheckAllowUnversioned) { this.clientLibraryVersionCheckAllowUnversioned = clientLibraryVersionCheckAllowUnversioned; } public String getStatusFilePath() { return statusFilePath; } public void setStatusFilePath(String statusFilePath) { this.statusFilePath = statusFilePath; } public int getMaxUnackedMessagesPerConsumer() { return maxUnackedMessagesPerConsumer; } public void setMaxUnackedMessagesPerConsumer(int maxUnackedMessagesPerConsumer) { this.maxUnackedMessagesPerConsumer = maxUnackedMessagesPerConsumer; } public int getMaxUnackedMessagesPerSubscription() { return maxUnackedMessagesPerSubscription; } public void setMaxUnackedMessagesPerSubscription(int maxUnackedMessagesPerSubscription) { this.maxUnackedMessagesPerSubscription = maxUnackedMessagesPerSubscription; } public int getMaxConcurrentLookupRequest() { return maxConcurrentLookupRequest; } public void setMaxConcurrentLookupRequest(int maxConcurrentLookupRequest) { this.maxConcurrentLookupRequest = maxConcurrentLookupRequest; } public int getMaxConcurrentTopicLoadRequest() { return maxConcurrentTopicLoadRequest; } public void setMaxConcurrentTopicLoadRequest(int maxConcurrentTopicLoadRequest) { this.maxConcurrentTopicLoadRequest = maxConcurrentTopicLoadRequest; } public boolean isTlsEnabled() { return tlsEnabled; } public void setTlsEnabled(boolean tlsEnabled) { this.tlsEnabled = tlsEnabled; } public String getTlsCertificateFilePath() { return tlsCertificateFilePath; } public void setTlsCertificateFilePath(String tlsCertificateFilePath) { this.tlsCertificateFilePath = tlsCertificateFilePath; } public String getTlsKeyFilePath() { return tlsKeyFilePath; } public void setTlsKeyFilePath(String tlsKeyFilePath) { this.tlsKeyFilePath = tlsKeyFilePath; } public String getTlsTrustCertsFilePath() { return tlsTrustCertsFilePath; } public void setTlsTrustCertsFilePath(String tlsTrustCertsFilePath) { this.tlsTrustCertsFilePath = tlsTrustCertsFilePath; } public boolean isTlsAllowInsecureConnection() { return tlsAllowInsecureConnection; } public void setTlsAllowInsecureConnection(boolean tlsAllowInsecureConnection) { this.tlsAllowInsecureConnection = tlsAllowInsecureConnection; } public boolean isAuthenticationEnabled() { return authenticationEnabled; } public void setAuthenticationEnabled(boolean authenticationEnabled) { this.authenticationEnabled = authenticationEnabled; } public void setAuthenticationProviders(Set<String> providersClassNames) { authenticationProviders = providersClassNames; } public Set<String> getAuthenticationProviders() { return authenticationProviders; } public boolean isAuthorizationEnabled() { return authorizationEnabled; } public void setAuthorizationEnabled(boolean authorizationEnabled) { this.authorizationEnabled = authorizationEnabled; } public Set<String> getSuperUserRoles() { return superUserRoles; } public void setSuperUserRoles(Set<String> superUserRoles) { this.superUserRoles = superUserRoles; } public String getBrokerClientAuthenticationPlugin() { return brokerClientAuthenticationPlugin; } public void setBrokerClientAuthenticationPlugin(String brokerClientAuthenticationPlugin) { this.brokerClientAuthenticationPlugin = brokerClientAuthenticationPlugin; } public String getBrokerClientAuthenticationParameters() { return brokerClientAuthenticationParameters; } public void setBrokerClientAuthenticationParameters(String brokerClientAuthenticationParameters) { this.brokerClientAuthenticationParameters = brokerClientAuthenticationParameters; } public String getBookkeeperClientAuthenticationPlugin() { return bookkeeperClientAuthenticationPlugin; } public void setBookkeeperClientAuthenticationPlugin(String bookkeeperClientAuthenticationPlugin) { this.bookkeeperClientAuthenticationPlugin = bookkeeperClientAuthenticationPlugin; } public String getBookkeeperClientAuthenticationParametersName() { return bookkeeperClientAuthenticationParametersName; } public void setBookkeeperClientAuthenticationParametersName(String bookkeeperClientAuthenticationParametersName) { this.bookkeeperClientAuthenticationParametersName = bookkeeperClientAuthenticationParametersName; } public String getBookkeeperClientAuthenticationParameters() { return bookkeeperClientAuthenticationParameters; } public void setBookkeeperClientAuthenticationParameters(String bookkeeperClientAuthenticationParameters) { this.bookkeeperClientAuthenticationParameters = bookkeeperClientAuthenticationParameters; } public long getBookkeeperClientTimeoutInSeconds() { return bookkeeperClientTimeoutInSeconds; } public void setBookkeeperClientTimeoutInSeconds(long bookkeeperClientTimeoutInSeconds) { this.bookkeeperClientTimeoutInSeconds = bookkeeperClientTimeoutInSeconds; } public int getBookkeeperClientSpeculativeReadTimeoutInMillis() { return bookkeeperClientSpeculativeReadTimeoutInMillis; } public void setBookkeeperClientSpeculativeReadTimeoutInMillis(int bookkeeperClientSpeculativeReadTimeoutInMillis) { this.bookkeeperClientSpeculativeReadTimeoutInMillis = bookkeeperClientSpeculativeReadTimeoutInMillis; } public boolean isBookkeeperClientHealthCheckEnabled() { return bookkeeperClientHealthCheckEnabled; } public void setBookkeeperClientHealthCheckEnabled(boolean bookkeeperClientHealthCheckEnabled) { this.bookkeeperClientHealthCheckEnabled = bookkeeperClientHealthCheckEnabled; } public long getBookkeeperClientHealthCheckIntervalSeconds() { return bookkeeperClientHealthCheckIntervalSeconds; } public void setBookkeeperClientHealthCheckIntervalSeconds(long bookkeeperClientHealthCheckIntervalSeconds) { this.bookkeeperClientHealthCheckIntervalSeconds = bookkeeperClientHealthCheckIntervalSeconds; } public long getBookkeeperClientHealthCheckErrorThresholdPerInterval() { return bookkeeperClientHealthCheckErrorThresholdPerInterval; } public void setBookkeeperClientHealthCheckErrorThresholdPerInterval( long bookkeeperClientHealthCheckErrorThresholdPerInterval) { this.bookkeeperClientHealthCheckErrorThresholdPerInterval = bookkeeperClientHealthCheckErrorThresholdPerInterval; } public long getBookkeeperClientHealthCheckQuarantineTimeInSeconds() { return bookkeeperClientHealthCheckQuarantineTimeInSeconds; } public void setBookkeeperClientHealthCheckQuarantineTimeInSeconds( long bookkeeperClientHealthCheckQuarantineTimeInSeconds) { this.bookkeeperClientHealthCheckQuarantineTimeInSeconds = bookkeeperClientHealthCheckQuarantineTimeInSeconds; } public boolean isBookkeeperClientRackawarePolicyEnabled() { return bookkeeperClientRackawarePolicyEnabled; } public void setBookkeeperClientRackawarePolicyEnabled(boolean bookkeeperClientRackawarePolicyEnabled) { this.bookkeeperClientRackawarePolicyEnabled = bookkeeperClientRackawarePolicyEnabled; } public String getBookkeeperClientIsolationGroups() { return bookkeeperClientIsolationGroups; } public void setBookkeeperClientIsolationGroups(String bookkeeperClientIsolationGroups) { this.bookkeeperClientIsolationGroups = bookkeeperClientIsolationGroups; } public int getManagedLedgerDefaultEnsembleSize() { return managedLedgerDefaultEnsembleSize; } public void setManagedLedgerDefaultEnsembleSize(int managedLedgerDefaultEnsembleSize) { this.managedLedgerDefaultEnsembleSize = managedLedgerDefaultEnsembleSize; } public int getManagedLedgerDefaultWriteQuorum() { return managedLedgerDefaultWriteQuorum; } public void setManagedLedgerDefaultWriteQuorum(int managedLedgerDefaultWriteQuorum) { this.managedLedgerDefaultWriteQuorum = managedLedgerDefaultWriteQuorum; } public int getManagedLedgerDefaultAckQuorum() { return managedLedgerDefaultAckQuorum; } public void setManagedLedgerDefaultAckQuorum(int managedLedgerDefaultAckQuorum) { this.managedLedgerDefaultAckQuorum = managedLedgerDefaultAckQuorum; } public int getManagedLedgerCacheSizeMB() { return managedLedgerCacheSizeMB; } public void setManagedLedgerCacheSizeMB(int managedLedgerCacheSizeMB) { this.managedLedgerCacheSizeMB = managedLedgerCacheSizeMB; } public double getManagedLedgerCacheEvictionWatermark() { return managedLedgerCacheEvictionWatermark; } public void setManagedLedgerCacheEvictionWatermark(double managedLedgerCacheEvictionWatermark) { this.managedLedgerCacheEvictionWatermark = managedLedgerCacheEvictionWatermark; } public double getManagedLedgerDefaultMarkDeleteRateLimit() { return managedLedgerDefaultMarkDeleteRateLimit; } public void setManagedLedgerDefaultMarkDeleteRateLimit(double managedLedgerDefaultMarkDeleteRateLimit) { this.managedLedgerDefaultMarkDeleteRateLimit = managedLedgerDefaultMarkDeleteRateLimit; } public int getManagedLedgerMaxEntriesPerLedger() { return managedLedgerMaxEntriesPerLedger; } public void setManagedLedgerMaxEntriesPerLedger(int managedLedgerMaxEntriesPerLedger) { this.managedLedgerMaxEntriesPerLedger = managedLedgerMaxEntriesPerLedger; } public int getManagedLedgerMinLedgerRolloverTimeMinutes() { return managedLedgerMinLedgerRolloverTimeMinutes; } public void setManagedLedgerMinLedgerRolloverTimeMinutes(int managedLedgerMinLedgerRolloverTimeMinutes) { this.managedLedgerMinLedgerRolloverTimeMinutes = managedLedgerMinLedgerRolloverTimeMinutes; } public int getManagedLedgerMaxLedgerRolloverTimeMinutes() { return managedLedgerMaxLedgerRolloverTimeMinutes; } public void setManagedLedgerMaxLedgerRolloverTimeMinutes(int managedLedgerMaxLedgerRolloverTimeMinutes) { this.managedLedgerMaxLedgerRolloverTimeMinutes = managedLedgerMaxLedgerRolloverTimeMinutes; } public int getManagedLedgerCursorMaxEntriesPerLedger() { return managedLedgerCursorMaxEntriesPerLedger; } public void setManagedLedgerCursorMaxEntriesPerLedger(int managedLedgerCursorMaxEntriesPerLedger) { this.managedLedgerCursorMaxEntriesPerLedger = managedLedgerCursorMaxEntriesPerLedger; } public int getManagedLedgerCursorRolloverTimeInSeconds() { return managedLedgerCursorRolloverTimeInSeconds; } public void setManagedLedgerCursorRolloverTimeInSeconds(int managedLedgerCursorRolloverTimeInSeconds) { this.managedLedgerCursorRolloverTimeInSeconds = managedLedgerCursorRolloverTimeInSeconds; } public int getManagedLedgerMaxUnackedRangesToPersist() { return managedLedgerMaxUnackedRangesToPersist; } public void setManagedLedgerMaxUnackedRangesToPersist(int managedLedgerMaxUnackedRangesToPersist) { this.managedLedgerMaxUnackedRangesToPersist = managedLedgerMaxUnackedRangesToPersist; } public boolean isLoadBalancerEnabled() { return loadBalancerEnabled; } public void setLoadBalancerEnabled(boolean loadBalancerEnabled) { this.loadBalancerEnabled = loadBalancerEnabled; } public void setLoadBalancerPlacementStrategy(String placementStrategy) { this.loadBalancerPlacementStrategy = placementStrategy; } public String getLoadBalancerPlacementStrategy() { return this.loadBalancerPlacementStrategy; } public int getLoadBalancerReportUpdateThresholdPercentage() { return loadBalancerReportUpdateThresholdPercentage; } public void setLoadBalancerReportUpdateThresholdPercentage(int loadBalancerReportUpdateThresholdPercentage) { this.loadBalancerReportUpdateThresholdPercentage = loadBalancerReportUpdateThresholdPercentage; } public int getLoadBalancerReportUpdateMaxIntervalMinutes() { return loadBalancerReportUpdateMaxIntervalMinutes; } public void setLoadBalancerReportUpdateMaxIntervalMinutes(int loadBalancerReportUpdateMaxIntervalMinutes) { this.loadBalancerReportUpdateMaxIntervalMinutes = loadBalancerReportUpdateMaxIntervalMinutes; } public int getLoadBalancerHostUsageCheckIntervalMinutes() { return loadBalancerHostUsageCheckIntervalMinutes; } public void setLoadBalancerHostUsageCheckIntervalMinutes(int loadBalancerHostUsageCheckIntervalMinutes) { this.loadBalancerHostUsageCheckIntervalMinutes = loadBalancerHostUsageCheckIntervalMinutes; } public int getLoadBalancerSheddingIntervalMinutes() { return loadBalancerSheddingIntervalMinutes; } public void setLoadBalancerSheddingIntervalMinutes(int loadBalancerSheddingIntervalMinutes) { this.loadBalancerSheddingIntervalMinutes = loadBalancerSheddingIntervalMinutes; } public long getLoadBalancerSheddingGracePeriodMinutes() { return loadBalancerSheddingGracePeriodMinutes; } public void setLoadBalancerSheddingGracePeriodMinutes(long loadBalancerSheddingGracePeriodMinutes) { this.loadBalancerSheddingGracePeriodMinutes = loadBalancerSheddingGracePeriodMinutes; } public int getLoadBalancerResourceQuotaUpdateIntervalMinutes() { return this.loadBalancerResourceQuotaUpdateIntervalMinutes; } public void setLoadBalancerResourceQuotaUpdateIntervalMinutes(int interval) { this.loadBalancerResourceQuotaUpdateIntervalMinutes = interval; } public int getLoadBalancerBrokerUnderloadedThresholdPercentage() { return loadBalancerBrokerUnderloadedThresholdPercentage; } public void setLoadBalancerBrokerUnderloadedThresholdPercentage( int loadBalancerBrokerUnderloadedThresholdPercentage) { this.loadBalancerBrokerUnderloadedThresholdPercentage = loadBalancerBrokerUnderloadedThresholdPercentage; } public int getLoadBalancerBrokerOverloadedThresholdPercentage() { return loadBalancerBrokerOverloadedThresholdPercentage; } public void setLoadBalancerNamespaceBundleMaxTopics(int topics) { this.loadBalancerNamespaceBundleMaxTopics = topics; } public int getLoadBalancerNamespaceBundleMaxTopics() { return this.loadBalancerNamespaceBundleMaxTopics; } public void setLoadBalancerNamespaceBundleMaxSessions(int sessions) { this.loadBalancerNamespaceBundleMaxSessions = sessions; } public int getLoadBalancerNamespaceBundleMaxSessions() { return this.loadBalancerNamespaceBundleMaxSessions; } public void setLoadBalancerNamespaceBundleMaxMsgRate(int msgRate) { this.loadBalancerNamespaceBundleMaxMsgRate = msgRate; } public int getLoadBalancerNamespaceBundleMaxMsgRate() { return this.loadBalancerNamespaceBundleMaxMsgRate; } public void setLoadBalancerNamespaceBundleMaxBandwidthMbytes(int bandwidth) { this.loadBalancerNamespaceBundleMaxBandwidthMbytes = bandwidth; } public int getLoadBalancerNamespaceBundleMaxBandwidthMbytes() { return this.loadBalancerNamespaceBundleMaxBandwidthMbytes; } public void setLoadBalancerBrokerOverloadedThresholdPercentage( int loadBalancerBrokerOverloadedThresholdPercentage) { this.loadBalancerBrokerOverloadedThresholdPercentage = loadBalancerBrokerOverloadedThresholdPercentage; } public int getLoadBalancerBrokerComfortLoadLevelPercentage() { return this.loadBalancerBrokerComfortLoadLevelPercentage; } public void setLoadBalancerBrokerComfortLoadLevelPercentage(int percentage) { this.loadBalancerBrokerComfortLoadLevelPercentage = percentage; } public boolean getLoadBalancerAutoBundleSplitEnabled() { return this.loadBalancerAutoBundleSplitEnabled; } public void setLoadBalancerAutoBundleSplitEnabled(boolean enabled) { this.loadBalancerAutoBundleSplitEnabled = enabled; } public void setLoadBalancerNamespaceMaximumBundles(int bundles) { this.loadBalancerNamespaceMaximumBundles = bundles; } public int getLoadBalancerNamespaceMaximumBundles() { return this.loadBalancerNamespaceMaximumBundles; } public boolean isReplicationMetricsEnabled() { return replicationMetricsEnabled; } public void setReplicationMetricsEnabled(boolean replicationMetricsEnabled) { this.replicationMetricsEnabled = replicationMetricsEnabled; } public int getReplicationConnectionsPerBroker() { return replicationConnectionsPerBroker; } public void setReplicationConnectionsPerBroker(int replicationConnectionsPerBroker) { this.replicationConnectionsPerBroker = replicationConnectionsPerBroker; } public int getReplicationProducerQueueSize() { return replicationProducerQueueSize; } public void setReplicationProducerQueueSize(int replicationProducerQueueSize) { this.replicationProducerQueueSize = replicationProducerQueueSize; } public List<String> getBootstrapNamespaces() { return bootstrapNamespaces; } public Object getProperty(String key) { return properties.get(key); } @Override public Properties getProperties() { return properties; } @Override public void setProperties(Properties properties) { this.properties = properties; } public int getDefaultRetentionTimeInMinutes() { return defaultRetentionTimeInMinutes; } public void setDefaultRetentionTimeInMinutes(int defaultRetentionTimeInMinutes) { this.defaultRetentionTimeInMinutes = defaultRetentionTimeInMinutes; } public int getDefaultRetentionSizeInMB() { return defaultRetentionSizeInMB; } public void setDefaultRetentionSizeInMB(int defaultRetentionSizeInMB) { this.defaultRetentionSizeInMB = defaultRetentionSizeInMB; } public int getBookkeeperHealthCheckIntervalSec() { return (int) bookkeeperClientHealthCheckIntervalSeconds; } public void setBootstrapNamespaces(List<String> bootstrapNamespaces) { this.bootstrapNamespaces = bootstrapNamespaces; } public void setBrokerServicePurgeInactiveFrequencyInSeconds(int brokerServicePurgeInactiveFrequencyInSeconds) { this.brokerServicePurgeInactiveFrequencyInSeconds = brokerServicePurgeInactiveFrequencyInSeconds; } public int getKeepAliveIntervalSeconds() { return keepAliveIntervalSeconds; } public void setKeepAliveIntervalSeconds(int keepAliveIntervalSeconds) { this.keepAliveIntervalSeconds = keepAliveIntervalSeconds; } public int getBrokerServicePurgeInactiveFrequencyInSeconds() { return brokerServicePurgeInactiveFrequencyInSeconds; } public long getZooKeeperSessionTimeoutMillis() { return zooKeeperSessionTimeoutMillis; } public void setZooKeeperSessionTimeoutMillis(long zooKeeperSessionTimeoutMillis) { this.zooKeeperSessionTimeoutMillis = zooKeeperSessionTimeoutMillis; } public String getReplicatorPrefix() { return replicatorPrefix; } public void setReplicatorPrefix(String replicatorPrefix) { this.replicatorPrefix = replicatorPrefix; } public String getLoadManagerClassName() { return loadManagerClassName; } public void setLoadManagerClassName(String loadManagerClassName) { this.loadManagerClassName = loadManagerClassName; } public boolean isPreferLaterVersions() { return preferLaterVersions; } public void setPreferLaterVersions(boolean preferLaterVersions) { this.preferLaterVersions = preferLaterVersions; } }