Skip to main content
Version: 2.1.x (archived)

Configuration File Manual

Introduction​

This document describes the configuration parameters for BifroMQ.

bootstrap​

  • Type: Boolean
  • Default value: false
  • Description: If the node is responsible for cluster bootstrap, then the value should be set to be true. Otherwise, it should be false. NOTE: there must be EXACTLY ONE bootstrap node in cluster deployment.

authProviderFQN​

  • Type: String
  • Default value: null
  • Description: Specifies the name of the authProvider to be loaded via Pf4j. If not configured, the built-in DefaultAuthProvider will be used.

settingProviderFQN​

  • Type: String
  • Default value: null
  • Description: Specifies the name of the settingProvider to be loaded via Pf4j. If not configured, the built-in DefaultSettingProvider will be used.

clusterConfig​

env​

  • Type: String
  • Default value: empty
  • Description: the cluster environment. Note: clusters with different environment are dependent with each other. Also, Cluster environment cannot be null or empty string.

host​

  • Type: String
  • Default value: empty
  • Description: The host address

port​

  • Type: int
  • Default value: 0
  • Description: The port of host.

seedEndpoints​

  • Type: String
  • Default value: null
  • Description: The advertised ip:port list in agent cluster.

clusterDomainName​

  • Type: String
  • Default value: empty
  • Description: The domain name of the agent host cluster.

mqttServerConfig​

connTimeoutSec​

  • Type: Integer
  • Default value: 20
  • Description: The tolerable timeout duration from the establishment of the TCP connection to the completion of the Connect action. The server will actively disconnect if this limit is exceeded.

maxConnPerSec​

  • Type: Integer
  • Default value: 2000
  • Description: The maximum frequency of Connect actions accepted per second. Connections exceeding this limit are restricted through a token bucket and will be disconnected subsequently.

maxDisconnPerSec​

  • Type: Integer
  • Default value: 1000
  • Description: The maximum frequency of Disconnect actions accepted per second, controlled through a token bucket.

maxMsgByteSize​

  • Type: Integer
  • Default value: 256 * 1024
  • Description: The maximum allowed size for an mqtt packet.

maxResendTimes​

  • Type: Integer
  • Default value: 5
  • Description: The maximum number of resends for messages with QoS1 and QoS2. The message will be discarded after exceeding this limit.

maxConnBandwidth​

  • Type: Integer
  • Default value: 512 * 1024
  • Description: The maximum bandwidth allowed for a single MQTT connection, calculated separately for inbound and outbound traffic.

defaultKeepAliveSec​

  • Type: Integer
  • Default value: 300
  • Description: The default keepAlive duration for MQTT connections. This value is used when the client does not actively set it.

qos2ConfirmWindowSec​

  • Type: Integer
  • Default value: 5
  • Description: The expiration time for caching messageId internally for QoS2 messages.

bossELGThreads​

  • Type: Integer
  • Default value: 1
  • Description: Number of threads handling connection in Netty.

workerELGThreads​

  • Type: Integer
  • Default value: 1/2 of the availableProcessors with a minimum of 2.
  • Description: Number the threads handling message processing for channels.

tcpListener​

enable​

  • Type: Boolean
  • Default value: true
  • Description: Whether to build tcp access capability within the mqtt-server.

host​

  • Type: String
  • Default value: 0.0.0.0
  • Description: The address to which the mqtt-server binds. This is used to provide an external mqtt access point.

port​

  • Type: Integer
  • Default value: 1883
  • Description: The port to which the mqtt-server binds for exposing the mqtt tcp access port to the outside.

tlsListener​

enable​

  • Type: Boolean
  • Default value: false
  • Description: Whether to build tls access capability within the mqtt-server.

host​

  • Type: String
  • Default value: 0.0.0.0
  • Description: The address to which the mqtt-server binds. This is used to provide an external mqtt access point.

port​

  • Type: Integer
  • Default value: 1884
  • Description: The port to which the mqtt-server binds for exposing the mqtt tls access port to the outside.

sslConfig​

certFile​
  • Type: String
  • Default value: null
  • Description: Specifies the file name of the public key certificate used by the server when the mqtt-server module provides TLS and WSS capabilities. It will attempt to load from the directory specified by the “CONF_DIR” system parameter, or from the current classpath.
keyFile​
  • Type: String
  • Default value: null
  • Description: Specifies the file name of the private key certificate used by the server when the mqtt-server module provides TLS and WSS capabilities. It will attempt to load from the directory specified by the “CONF_DIR” system parameter, or from the current classpath.
trustCertsFile​
  • Type: String
  • Default value: null
  • Description: Specifies the file name of the root certificate used by the server when the mqtt-server module provides TLS and WSS capabilities. It will attempt to load from the directory specified by the “CONF_DIR” system parameter, or from the current classpath.
clientAuth​
  • Type: String
  • Default value: OPTIONAL
  • Description: Specifies whether client authentication is required when establishing an SSL connection between the mqtt-server and the client. Possible values include:
    • NONE: No verification required
    • OPTIONAL: The server requests client verification but won't fail if the client does not provide a certificate.
    • REQUIRE: The server requires client verification and will fail if the client does not provide a certificate.

wsListener​

enable​

  • Type: Boolean
  • Default value: true
  • Description: Whether to build ws access capability within the mqtt-server.

host​

  • Type: String
  • Default value: 0.0.0.0
  • Description: The address to which the mqtt-server binds. This is used to provide an external mqtt access point.

port​

  • Type: Integer
  • Default value: 8080
  • Description: The port to which the mqtt-server binds for exposing the mqtt websocket access port to the outside.

wsPath​

  • Type: String
  • Default value: /mqtt
  • Description: The access path for ws and wss in the mqtt-server.

wssListener​

enable​

  • Type: Boolean
  • Default value: false
  • Description: Whether to build wss access capability within the mqtt-server.

host​

  • Type: String
  • Default value: 0.0.0.0
  • Description: The address to which the mqtt-server binds. This is used to provide an external mqtt access point.

port​

  • Type: Integer
  • Default value: 8443
  • Description: Whether to build wss access capability within the mqtt-server.

wsPath​

  • Type: String
  • Default value: /mqtt
  • Description: The access path for ws and wss in the mqtt-server.

sslConfig​

  • Description: The same with tlsListener.sslConfig.

rpcClientConfig​

workerThreads​

  • Type: Integer
  • Default value: 1/8 of the available processor cores with a minimum of 2.
  • Description: The number of threads in rpc clients.

sslConfig​

certFile​

  • Type: String
  • Default value: null
  • Description: Specifies the file name of the public key certificate.

keyFile​

  • Type: String
  • Default value: null
  • Description: Specifies the file name of the private key certificate.

trustCertsFile​

  • Type: String
  • Default value: null
  • Description: Specifies the file name of the root certificate.

rpcServerConfig​

host​

  • Type: String
  • Default value: The same with mqtt server host address.
  • Description: The host for RPC server.

port​

  • Type: Integer
  • Default value: 0
  • Description: The port for RPC server.

workerThreads​

  • Type: Integer
  • Default value: 1/4 of the available processor cores with a minimum of 2.
  • Description: The number of threads in rpc server.

sslConfig​

  • Description: It shares the same fields and meaning with tlsListener.sslConfig.

baseKVRpcServerConfig​

  • Description: It shares the same fields and meaning with rpcServerConfig.

stateStoreConfig​

queryThreads​

  • Type: Integer
  • Default Value: 1/3 of available processors with a minimum of 2
  • Description: The number of core and maximum threads in the thread pool used for executing query-type requests in the BaseKV storage of dist-worker, inbox-store, and retain-store modules.

tickerThreads​

  • Type: Integer
  • Default Value: 1/20 of available processors with a minimum of 1
  • Description: The number of core and maximum threads in the thread pool used for executing periodic tick actions within the BaseKV storage of dist-worker, inbox-store, and retain-store modules.

bgWorkerThreads​

  • Type: Integer
  • Default Value: 1/4 of available processors with a minimum of 1
  • Description: The number of core and maximum threads in the thread pool used for executing background actions.

distWorkerConfig​

queryPipelinePerStore​

  • Type: Integer
  • Default Value: 1000
  • Description: The number of query pipelines per BaseKV store.

compactWALThreshold​

  • Type: Integer
  • Default Value: 2000
  • Description: The max number of logs before compaction

dataEngineConfig​

type​
  • Type: String
  • Default Value: rocksdb
  • Description: Specifies the type of data engine used for BaseKV storage in the dist-worker module. Options include:
    • rocksDB: Provides persistence capabilities; can recover state after a restart.
    • memory: No persistence; data is lost after a restart.
gcIntervalInSec​
  • Type: Integer
  • Default value: 300
  • Description: Specifies the interval (in seconds) at which the data engine in the dist-worker module's BaseKV performs garbage collection.
dataPathRoot​
  • Type: String
  • Default value: null
  • Description: Effective when the type is set to rocksDB. Specifies the directory where the dist-worker module's dataEngine stores data files. If configured as an absolute path, it will load directly; if a relative path, it will attempt to load from the directories specified by the “DATA_DIR” and “user.dir” system parameters.
compactMinTombstoneKeys​
  • Type: Integer
  • Default Value: 200,000
  • Description: Effective when 'type' is set to rocksDB.
compactTombstonePercent​
  • Type: Double
  • Default Value: 0.3
  • Description: Effective when 'type' is set to rocksDB. When the number of keys deleted in a particular Range in the rocksDB used by dataEngine exceeds compactMinTombstoneKeys, and the proportion of deleted keys exceeds compactTombstonePercent of the total, a compact operation is executed on this Range space.
asyncWALFlush​
  • Type: Boolean
  • Default Value: false
  • Description: It only works for WAL engine and the logs will be flushed asynchronously.
fsyncWAL​
  • Type: Boolean
  • Default Value: false
  • Description: It only works for WAL engine. If this flag is true, writes will be slower. If this flag is false, and the machine crashes, some recent writes may be lost.

walEngineConfig​

  • Description: Similar to data engine. For rocksdb configuration, the default compactMinTombstoneKeys is 10,000.

balanceConfig​

scheduleIntervalInMs​

  • Type: Long
  • Default Value: 5000
  • Description: Scheduling interval for BaseKV range balancers.

balancers​

  • Type: List of String
  • Default Value: com.baidu.bifromq.dist.worker.balance.ReplicaCntBalancerFactory
  • Description: BaseKV range balancers FQNs.

inboxStoreConfig​

purgeDelaySeconds​

  • Type: Integer
  • Default Value: 180
  • Description: Puring some delay for expired inboxes.

queryPipelinePerStore​

  • Type: Integer
  • Default Value: 100
  • Description: The number of query pipelines per BaseKV store.

other fields​

  • Description: Other fields are the same meaning with dist workers'.

retainStoreConfig​

  • Description: The fields are the same meaning with dist workers'.

apiServerConfig​

enable​

  • Type: Boolean
  • Default Value: true
  • Description: Whether to build http access capability within the api-service.

host​

  • Type: String
  • Default value: The same with mqtt server host address.
  • Description: The host for api-service.

httpPort​

  • Type: Integer
  • Default value: 8091
  • Description: The http port for api-service.

apiBossThreads​

  • Type: Integer
  • Default value: 1
  • Description: Number of threads handling connection in Netty.

apiWorkerThreads​

  • Type: Integer
  • Default value: 2
  • Description: Number the threads handling message processing for channels.

httpsListenerConfig​

enable​

  • Type: Boolean
  • Default Value: false
  • Description: Whether to build https access capability within the api-service.

host​

  • Type: String
  • Default value: The same with mqtt server host address.
  • Description: The host for api-service.

port​

  • Type: Integer
  • Default value: 8090
  • Description: The http port for api-service.

sslConfig​

  • Description: It shares the same fields and meaning with tlsListener.sslConfig.