Skip to content
Stand with Ukraine flag

TBMQ configuration

SERVER_SHUTDOWN · Default graceful

Shutdown type. Accepted values: graceful, immediate.

HTTP_BIND_ADDRESS · Default 0.0.0.0

HTTP Server bind address. Has no effect if web-environment is disabled.

HTTP_BIND_PORT · Default 8083

HTTP Server bind port. Has no effect if web-environment is disabled.

HTTP_FORWARD_HEADERS_STRATEGY · Default framework

Server headers forwarding strategy. Required for Swagger UI when a reverse proxy is used.

HTTP2_ENABLED · Default true

Enables or disables HTTP/2 support.

HTTP_LOG_CONTROLLER_ERROR_STACK_TRACE · Default false

Enables or disables logging of errors with stacktrace when the REST API throws an exception.

SSL_ENABLED · Default false

Enables or disables SSL support.

SSL_CREDENTIALS_TYPE · Default PEM

Server credentials type. Accepted values: PEM (PEM certificate file), KEYSTORE (Java keystore).

SSL_PEM_CERT · Default server.pem

Path to the server certificate file (holds server certificate or certificate chain, may include server private key).

SSL_PEM_KEY · Default server_key.pem

Path to the server certificate private key file. Optional by default. Required if the private key is not present in the server certificate file.

SSL_PEM_KEY_PASSWORD · Default server_key_password

Optional. Server certificate private key password.

SSL_KEY_STORE_TYPE · Default PKCS12

Type of the key store. Accepted values: JKS, PKCS12.

SSL_KEY_STORE · Default classpath:keystore/keystore.p12

Path to the key store that holds the SSL certificate.

SSL_KEY_STORE_PASSWORD · Default thingsboard_mqtt_broker

Password used to access the key store.

SSL_KEY_ALIAS · Default tomcat

Key alias.

SSL_KEY_PASSWORD · Default thingsboard_mqtt_broker

Password used to access the key.

MQTT_PROXY_PROTOCOL_ENABLED · Default false

Enables or disables proxy protocol support as a global setting for all listeners. If enabled, supports both v1 and v2. Useful to get the real IP address of the client in the logs, for session details info and unauthorized clients feature.

NETTY_LEAK_DETECTOR_LVL · Default DISABLED

Netty leak detector level. Accepted values: DISABLED, SIMPLE, ADVANCED, PARANOID. Applied globally for all listeners.

NETTY_WRITE_BUFFER_HIGH_WATER_MARK · Default 1280

Threshold (in KB) at which Netty considers the channel non-writable. When reached, TBMQ stops delivering data to the subscriber until the channel becomes writable again. Non-persistent clients lose data in this case.

NETTY_WRITE_BUFFER_LOW_WATER_MARK · Default 640

Threshold (in KB) at which Netty considers the channel writable again. When reached, TBMQ resumes delivering data to the subscriber.

NETTY_SO_RECEIVE_BUFFER · Default 0

Netty socket receive buffer size (in KB). When the buffer limit is reached, TCP triggers backpressure and notifies the sender to slow down. Defaults to 0, which uses the system’s default buffer size.

LISTENER_TCP_ENABLED · Default true

Enables or disables MQTT TCP port listener.

LISTENER_TCP_BIND_ADDRESS · Default 0.0.0.0

MQTT TCP listener bind address.

LISTENER_TCP_BIND_PORT · Default 1883

MQTT TCP listener bind port.

MQTT_TCP_PROXY_PROTOCOL_ENABLED

Enables or disables proxy protocol support for the MQTT TCP listener. Unset by default — inherits the global MQTT_PROXY_PROTOCOL_ENABLED value. If explicitly set, supports both v1 and v2 and takes precedence over the global setting. Useful to get the real IP address of the client in the logs, for session details info and unauthorized clients feature.

TCP_NETTY_BOSS_GROUP_THREADS · Default 1

Number of Netty boss group threads.

TCP_NETTY_WORKER_GROUP_THREADS · Default 12

Number of Netty worker group threads.

TCP_NETTY_MAX_PAYLOAD_SIZE · Default 65536

Maximum payload size (in bytes).

TCP_NETTY_SO_KEEPALIVE · Default true

Enables or disables the TCP keep-alive mechanism to periodically probe the other end of a connection.

TCP_NETTY_SHUTDOWN_QUIET_PERIOD · Default 0

Quiet period during graceful shutdown, in which no new tasks are submitted (in s).

TCP_NETTY_SHUTDOWN_TIMEOUT · Default 5

Maximum time to wait until the executor is stopped (in s).

LISTENER_SSL_ENABLED · Default false

Enables or disables MQTT SSL port listener.

LISTENER_SSL_BIND_ADDRESS · Default 0.0.0.0

MQTT SSL listener bind address.

LISTENER_SSL_BIND_PORT · Default 8883

MQTT SSL listener bind port.

MQTT_SSL_PROXY_PROTOCOL_ENABLED

Enables or disables proxy protocol support for the MQTT TLS listener. Unset by default — inherits the global MQTT_PROXY_PROTOCOL_ENABLED value. If explicitly set, supports both v1 and v2 and takes precedence over the global setting. Useful to get the real IP address of the client in the logs, for session details info and unauthorized clients feature.

LISTENER_SSL_PROTOCOL · Default TLSv1.2

SSL protocol. See this link for accepted values.

LISTENER_SSL_ENABLED_CIPHER_SUITES

Comma-separated list of cipher suites enabled for the mqtts listener (e.g. TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256). Defaults to empty, meaning all cipher suites supported by the provider are used.

LISTENER_SSL_CREDENTIALS_TYPE · Default PEM

Server credentials type. Accepted values: PEM (PEM certificate file), KEYSTORE (Java keystore).

LISTENER_SSL_PEM_CERT · Default mqttserver.pem

Path to the server certificate file (holds server certificate or certificate chain, may include server private key).

LISTENER_SSL_PEM_KEY · Default mqttserver_key.pem

Path to the server certificate private key file. Optional by default. Required if the private key is not present in the server certificate file.

LISTENER_SSL_PEM_KEY_PASSWORD · Default server_key_password

Optional. Server certificate private key password.

LISTENER_SSL_KEY_STORE_TYPE · Default JKS

Type of the key store. Accepted values: JKS, PKCS12.

LISTENER_SSL_KEY_STORE · Default mqttserver.jks

Path to the key store that holds the SSL certificate.

LISTENER_SSL_KEY_STORE_PASSWORD · Default server_ks_password

Password used to access the key store.

LISTENER_SSL_KEY_ALIAS

Optional. Alias of the private key. If not set, the platform will load the first private key from the keystore.

LISTENER_SSL_KEY_PASSWORD · Default server_key_password

Optional. Password to access the private key. If not set, the platform will attempt to load private keys that are not password-protected.

SSL_NETTY_BOSS_GROUP_THREADS · Default 1

Number of Netty boss group threads.

SSL_NETTY_WORKER_GROUP_THREADS · Default 12

Number of Netty worker group threads.

SSL_NETTY_MAX_PAYLOAD_SIZE · Default 65536

Maximum payload size (in bytes).

SSL_NETTY_SO_KEEPALIVE · Default true

Enables or disables the TCP keep-alive mechanism to periodically probe the other end of a connection.

SSL_NETTY_SHUTDOWN_QUIET_PERIOD · Default 0

Quiet period during graceful shutdown, in which no new tasks are submitted (in s).

SSL_NETTY_SHUTDOWN_TIMEOUT · Default 5

Maximum time to wait until the executor is stopped (in s).

LISTENER_WS_ENABLED · Default true

Enables or disables MQTT WS port listener.

LISTENER_WS_BIND_ADDRESS · Default 0.0.0.0

MQTT WS listener bind address.

LISTENER_WS_BIND_PORT · Default 8084

MQTT WS listener bind port.

MQTT_WS_PROXY_PROTOCOL_ENABLED

Enables or disables proxy protocol support for the MQTT WS listener. Unset by default — inherits the global MQTT_PROXY_PROTOCOL_ENABLED value. If explicitly set, supports both v1 and v2 and takes precedence over the global setting. Useful to get the real IP address of the client in the logs, for session details info and unauthorized clients feature.

MQTT_WS_FORWARD_HEADERS_ENABLED · Default false

Enables or disables honoring HTTP forward headers (X-Forwarded-For, X-Real-IP) on the WebSocket upgrade request to derive the real client IP. Useful when TBMQ sits behind an HTTP reverse proxy (e.g. NGINX) that cannot send the PROXY protocol on HTTP location blocks. When enabled, X-Forwarded-For (leftmost IP) wins over X-Real-IP. Falls back to the raw socket address if no usable header is present. Ignored when proxy protocol is enabled for this listener (per-listener or via the global listener.proxy_enabled) — PROXY protocol takes precedence. SECURITY: only enable this when TBMQ is behind a trusted reverse proxy that overwrites these headers; otherwise clients can spoof their source IP.

WS_NETTY_SUB_PROTOCOLS · Default mqttv3.1,mqtt

Comma-separated list of subprotocols that the WebSocket can negotiate. The subprotocol setting mqtt represents MQTT 3.1.1 and MQTT 5.

WS_NETTY_BOSS_GROUP_THREADS · Default 1

Number of Netty boss group threads.

WS_NETTY_WORKER_GROUP_THREADS · Default 12

Number of Netty worker group threads.

WS_NETTY_MAX_PAYLOAD_SIZE · Default 65536

Maximum payload size (in bytes).

WS_NETTY_SO_KEEPALIVE · Default true

Enables or disables the TCP keep-alive mechanism to periodically probe the other end of a connection.

WS_NETTY_SHUTDOWN_QUIET_PERIOD · Default 0

Quiet period during graceful shutdown, in which no new tasks are submitted (in s).

WS_NETTY_SHUTDOWN_TIMEOUT · Default 5

Maximum time to wait until the executor is stopped (in s).

LISTENER_WSS_ENABLED · Default false

Enables or disables MQTT WSS port listener.

LISTENER_WSS_BIND_ADDRESS · Default 0.0.0.0

MQTT WSS listener bind address.

LISTENER_WSS_BIND_PORT · Default 8085

MQTT WSS listener bind port.

MQTT_WSS_PROXY_PROTOCOL_ENABLED

Enables or disables proxy protocol support for the MQTT WSS listener. Unset by default — inherits the global MQTT_PROXY_PROTOCOL_ENABLED value. If explicitly set, supports both v1 and v2 and takes precedence over the global setting. Useful to get the real IP address of the client in the logs, for session details info and unauthorized clients feature.

MQTT_WSS_FORWARD_HEADERS_ENABLED · Default false

Enables or disables honoring HTTP forward headers (X-Forwarded-For, X-Real-IP) on the WebSocket upgrade request to derive the real client IP. Useful when TBMQ sits behind an HTTP reverse proxy (e.g. NGINX) that cannot send the PROXY protocol on HTTP location blocks. When enabled, X-Forwarded-For (leftmost IP) wins over X-Real-IP. Falls back to the raw socket address if no usable header is present. Ignored when proxy protocol is enabled for this listener (per-listener or via the global listener.proxy_enabled) — PROXY protocol takes precedence. SECURITY: only enable this when TBMQ is behind a trusted reverse proxy that overwrites these headers; otherwise clients can spoof their source IP.

LISTENER_WSS_PROTOCOL · Default TLSv1.2

SSL protocol. See this link for accepted values.

LISTENER_WSS_ENABLED_CIPHER_SUITES

Comma-separated list of cipher suites enabled for the wss listener (e.g. TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256). Defaults to empty, meaning all cipher suites supported by the provider are used.

LISTENER_WSS_CREDENTIALS_TYPE · Default PEM

Server credentials type. Accepted values: PEM (PEM certificate file), KEYSTORE (Java keystore).

LISTENER_WSS_PEM_CERT · Default ws_mqtt_server.pem

Path to the server certificate file (holds server certificate or certificate chain, may include server private key).

LISTENER_WSS_PEM_KEY · Default ws_mqtt_server_key.pem

Path to the server certificate private key file. Optional by default. Required if the private key is not present in the server certificate file.

LISTENER_WSS_PEM_KEY_PASSWORD · Default ws_server_key_password

Optional. Server certificate private key password.

LISTENER_WSS_KEY_STORE_TYPE · Default JKS

Type of the key store. Accepted values: JKS, PKCS12.

LISTENER_WSS_KEY_STORE · Default ws_mqtt_server.jks

Path to the key store that holds the SSL certificate.

LISTENER_WSS_KEY_STORE_PASSWORD · Default ws_server_ks_password

Password used to access the key store.

LISTENER_WSS_KEY_ALIAS

Optional. Alias of the private key. If not set, the platform will load the first private key from the keystore.

LISTENER_WSS_KEY_PASSWORD · Default ws_server_key_password

Optional. Password to access the private key. If not set, the platform will attempt to load private keys that are not password-protected.

WSS_NETTY_SUB_PROTOCOLS · Default mqttv3.1,mqtt

Comma-separated list of subprotocols that the WebSocket can negotiate. The subprotocol setting mqtt represents MQTT 3.1.1 and MQTT 5.

WSS_NETTY_BOSS_GROUP_THREADS · Default 1

Number of Netty boss group threads.

WSS_NETTY_WORKER_GROUP_THREADS · Default 12

Number of Netty worker group threads.

WSS_NETTY_MAX_PAYLOAD_SIZE · Default 65536

Maximum payload size (in bytes).

WSS_NETTY_SO_KEEPALIVE · Default true

Enables or disables the TCP keep-alive mechanism to periodically probe the other end of a connection.

WSS_NETTY_SHUTDOWN_QUIET_PERIOD · Default 0

Quiet period during graceful shutdown, in which no new tasks are submitted (in s).

WSS_NETTY_SHUTDOWN_TIMEOUT · Default 5

Maximum time to wait until the executor is stopped (in s).

TB_MSG_ALL_CONSUMERS_COUNT · Default 4

Number of parallel consumers for ‘tbmq.msg.all’ topic. Should not be more than the number of partitions in topic.

TB_MSG_ALL_THREADS_COUNT · Default 4

Number of threads in the pool to process consumers tasks. Should not be less than number of consumers.

TB_MSG_ALL_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.msg.all’ topic (in ms).

TB_MSG_ALL_PACK_PROCESSING_TIMEOUT · Default 20000

Timeout for processing a pack of messages from ‘tbmq.msg.all’ topic (in ms).

TB_MSG_ALL_ACK_STRATEGY_TYPE · Default SKIP_ALL

Processing strategy for ‘tbmq.msg.all’ topic. Accepted values: SKIP_ALL, RETRY_ALL.

TB_MSG_ALL_ACK_STRATEGY_RETRIES · Default 1

Number of retries. Use 0 for unlimited. Applies to the RETRY_ALL strategy.

TB_MSG_ALL_PARALLEL_PROCESSING · Default false

Enables or disables parallel processing of consumed messages (grouped by publishing client ID to preserve order). Helpful when the same client publishes lots of messages in a short amount of time. It is recommended to measure the impact of this parameter before enabling it in production.

TB_APP_PERSISTED_MSG_POLL_INTERVAL · Default 100

Poll interval for messages from Application topics (in ms).

TB_APP_PERSISTED_MSG_PACK_PROCESSING_TIMEOUT · Default 20000

Timeout for processing a pack of messages (in ms).

TB_APP_PERSISTED_MSG_ACK_STRATEGY_TYPE · Default RETRY_ALL

Processing strategy for Application topics. Accepted values: SKIP_ALL, RETRY_ALL.

TB_APP_PERSISTED_MSG_ACK_STRATEGY_RETRIES · Default 3

Number of retries. Use 0 for unlimited. Applies to the RETRY_ALL strategy.

TB_APP_PERSISTED_MSG_CLIENT_ID_VALIDATION · Default true

Enables or disables validation that the application client ID contains only alphanumeric characters (required for Kafka topic creation).

TB_APP_PERSISTED_MSG_SHARED_TOPIC_VALIDATION · Default true

Enables or disables validation that the application shared subscription topic filter contains only alphanumeric characters, ‘+’, or ‘#’ (required for Kafka topic creation).

TB_DEVICE_PERSISTED_MSG_CONSUMERS_COUNT · Default 3

Number of parallel consumers for ‘tbmq.msg.persisted’ topic. Should not be more than the number of partitions in topic.

TB_DEVICE_PERSISTED_MSG_THREADS_COUNT · Default 3

Number of threads in the pool to process consumers tasks.

TB_DEVICE_PERSISTED_MSG_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.msg.persisted’ topic (in ms).

TB_DEVICE_PERSISTED_MSG_PACK_PROCESSING_TIMEOUT · Default 20000

Timeout for processing a pack of messages from ‘tbmq.msg.persisted’ topic (in ms).

TB_DEVICE_PERSISTED_MSG_ACK_STRATEGY_TYPE · Default RETRY_ALL

Queue processing strategy. Accepted values: SKIP_ALL, RETRY_ALL.

TB_DEVICE_PERSISTED_MSG_ACK_STRATEGY_RETRIES · Default 3

Number of retries. Use 0 for unlimited. Applies to the RETRY_ALL strategy.

TB_DEVICE_PERSISTED_MSG_ACK_STRATEGY_PAUSE_BETWEEN_RETRIES · Default 1

Time to wait in the consumer thread before retrying (in s).

TB_RETAINED_MSG_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.msg.retained’ topic (in ms).

TB_RETAINED_MSG_ACK_WAIT_TIMEOUT_MS · Default 500

Wait timeout for system messages to be delivered to ‘tbmq.msg.retained’ topic (in ms).

TB_CLIENT_SESSION_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.client.session’ topic (in ms).

TB_CLIENT_SESSION_ACK_WAIT_TIMEOUT_MS · Default 500

Wait timeout for system messages to be delivered to ‘tbmq.client.session’ topic (in ms).

TB_CLIENT_SUBSCRIPTIONS_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.client.subscriptions’ topic (in ms).

TB_CLIENT_SUBSCRIPTIONS_ACK_WAIT_TIMEOUT_MS · Default 500

Wait timeout for system messages to be delivered to ‘tbmq.client.subscriptions’ topic (in ms).

TB_CLIENT_SESSION_EVENT_CONSUMERS_COUNT · Default 2

Number of parallel consumers for tbmq.client.session.event.request topic.

TB_CLIENT_SESSION_EVENT_MAX_PENDING_REQUESTS · Default 10000

Maximum number of pending client session events.

TB_CLIENT_SESSION_EVENT_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.client.session.event.request’ topic (in ms).

TB_CLIENT_SESSION_EVENT_BATCH_WAIT_MS · Default 15000

Maximum time to process ‘tbmq.client.session.event.request’ messages after consuming them (in ms).

TB_CLIENT_SESSION_EVENT_RESPONSE_SENDER_THREADS · Default 8

Number of threads for sending event responses to session event requests.

TB_CLIENT_SESSION_EVENT_RESPONSE_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.client.session.event.response’ topics (in ms).

TB_CLIENT_SESSION_EVENT_RESPONSE_MAX_REQUEST_TIMEOUT · Default 100000

Maximum time before client session events expire (in ms).

TB_CLIENT_SESSION_EVENT_RESPONSE_CLEANUP_INTERVAL · Default 100

Cleanup period for stale client session events (in ms).

TB_DISCONNECT_CLIENT_COMMAND_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.client.disconnect’ topics (in ms).

TB_PERSISTED_DOWNLINK_MSG_CONSUMERS_COUNT · Default 2

Number of parallel consumers for tbmq.msg.downlink.persisted topics.

TB_PERSISTED_DOWNLINK_MSG_THREADS_COUNT · Default 2

Number of threads in the pool to process consumers tasks.

TB_PERSISTED_DOWNLINK_MSG_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.msg.downlink.persisted’ topics (in ms).

TB_BASIC_DOWNLINK_MSG_CONSUMERS_COUNT · Default 2

Number of parallel consumers for tbmq.msg.downlink.basic topics.

TB_BASIC_DOWNLINK_MSG_THREADS_COUNT · Default 2

Number of threads in the pool to process consumers tasks.

TB_BASIC_DOWNLINK_MSG_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.msg.downlink.basic’ topics (in ms).

TB_APPLICATION_REMOVED_EVENT_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.sys.app.removed’ topic (in ms).

TB_APPLICATION_REMOVED_EVENT_PROCESSING_CRON · Default 0 0 3 * * *

Cron expression defining when to consume and process messages.

TB_APPLICATION_REMOVED_EVENT_PROCESSING_ZONE · Default UTC

Timezone for the processing cron-job.

TB_HISTORICAL_DATA_TOTAL_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.sys.historical.data’ topic (in ms).

TB_IE_UPLINK_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.ie.uplink’ topic (in ms).

TB_IE_UPLINK_PACK_PROCESSING_TIMEOUT · Default 20000

Timeout for processing a pack of messages from ‘tbmq.ie.uplink’ topic (in ms).

TB_IE_UPLINK_NOTIFICATIONS_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.ie.uplink.notifications’ topics (in ms).

TB_NODE_NOTIFICATION_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.sys.internode.notifications’ topics (in ms).

TB_BLOCKED_CLIENT_POLL_INTERVAL · Default 100

Poll interval for messages from ‘tbmq.client.blocked’ topic (in ms).

TB_BLOCKED_CLIENT_ACK_WAIT_TIMEOUT_MS · Default 500

Wait timeout for system messages to be delivered to ‘tbmq.client.blocked’ topic (in ms).

TB_KAFKA_SERVERS · Default localhost:9092

List of Kafka bootstrap servers used to establish connection.

TB_KAFKA_ENABLE_TOPIC_DELETION · Default true

Enables or disables deletion of Kafka topics created for Application MQTT Clients or Application Shared subscriptions. When true, TBMQ may automatically remove topics during cleanup (e.g., when an Application client or shared subscription is deleted). When false, TBMQ skips topic deletion and simply stops using them, preventing accidental data loss in production environments.

TB_KAFKA_DEFAULT_PRODUCER_CONSUMER_CONFIG

Base Kafka properties applied to admins, all producers and consumers, making it the ideal place for shared connection and security settings. Format is key:value;key:value. If a property value contains a semicolon (common in sasl.jaas.config), escape it with a backslash (e.g., …username=“user”;password=“pass”;).

TB_KAFKA_DEFAULT_CONSUMER_CONFIG

Additional Kafka properties specific only to consumers, merged with the global defaults — TB_KAFKA_DEFAULT_PRODUCER_CONSUMER_CONFIG (overriding them if keys conflict). Follows the standard key:value;key:value format. Ensure any internal semicolons in values are escaped as ;.

TB_KAFKA_DEFAULT_CONSUMER_PARTITION_ASSIGNMENT_STRATEGY · Default org.apache.kafka.clients.consumer.StickyAssignor

List of partition assignment strategy class names or types, ordered by preference, used to distribute partition ownership amongst consumer instances when group management is used.

TB_KAFKA_DEFAULT_CONSUMER_SESSION_TIMEOUT_MS · Default 10000

Timeout for detecting client failures when using Kafka’s group management facility (in ms).

TB_KAFKA_DEFAULT_CONSUMER_MAX_POLL_INTERVAL_MS · Default 300000

Maximum delay between invocations of poll() when using consumer group management (in ms).

TB_KAFKA_DEFAULT_CONSUMER_MAX_POLL_RECORDS · Default 2000

Maximum number of records returned in a single call to poll().

TB_KAFKA_DEFAULT_CONSUMER_MAX_PARTITION_FETCH_BYTES · Default 16777216

Maximum amount of data per partition the server will return (in bytes).

TB_KAFKA_DEFAULT_CONSUMER_FETCH_MAX_BYTES · Default 134217728

Maximum amount of data the server should return for a fetch request (in bytes).

TB_KAFKA_DEFAULT_CONSUMER_HEARTBEAT_INTERVAL_MS · Default 3000

Expected time between heartbeats to the consumer coordinator when using Kafka’s group management facilities. Heartbeats ensure the consumer’s session stays active and facilitate rebalancing when consumers join or leave. Must be set lower than TB_KAFKA_DEFAULT_CONSUMER_SESSION_TIMEOUT_MS, but typically no higher than 1/3 of that value. Can be adjusted lower to control the expected time for normal rebalances (in ms). Defaults to 3 s.

TB_KAFKA_DEFAULT_PRODUCER_CONFIG

Additional Kafka properties specific only to producers, merged with the global defaults — TB_KAFKA_DEFAULT_PRODUCER_CONSUMER_CONFIG (overriding them if keys conflict). Follows the standard key:value;key:value format. Ensure any internal semicolons in values are escaped as ;.

TB_KAFKA_DEFAULT_PRODUCER_ACKS · Default 1

Number of acknowledgments the producer requires the leader to have received before considering a request complete.

TB_KAFKA_DEFAULT_PRODUCER_RETRIES · Default 1

Number of retries for records whose send fails with a potentially transient error.

TB_KAFKA_DEFAULT_PRODUCER_BATCH_SIZE · Default 16384

Batch size for grouping records sent to the same partition (in bytes).

TB_KAFKA_DEFAULT_PRODUCER_LINGER_MS · Default 5

Delay for grouping records arriving between request transmissions into a batched request (in ms).

TB_KAFKA_DEFAULT_PRODUCER_BUFFER_MEMORY · Default 33554432

Total memory the producer can use to buffer records waiting to be sent to the server (in bytes).

TB_KAFKA_DEFAULT_COMPRESSION_TYPE · Default none

Compression type for all data generated by the producer. Accepted values: none, gzip, snappy, lz4, zstd.

TB_KAFKA_ADMIN_CONFIG · Default retries:1

Additional configs separated by semicolon for the admin Kafka client, merged with the global defaults — TB_KAFKA_DEFAULT_PRODUCER_CONSUMER_CONFIG (overriding them if keys conflict).

TB_KAFKA_ADMIN_COMMAND_TIMEOUT_SEC · Default 30

Kafka Admin client command timeout (in s). Applies to operations like describeCluster, listTopics, etc.

TB_KAFKA_ADMIN_TOPICS_CACHE_TTL_MS · Default 300000

Kafka topics cache TTL (in ms). Defines how long the list of topics is kept in memory before reloading from Kafka. Defaults to 5 minutes.

TB_KAFKA_CONSUMER_STATS_ENABLED · Default true

Enables or disables printing of consumer group lag between consumer offsets and the latest Kafka topic offsets.

TB_KAFKA_CONSUMER_STATS_PRINT_INTERVAL_MS · Default 60000

Print interval for Kafka consumer group statistics (in ms).

TB_KAFKA_CONSUMER_STATS_RESPONSE_TIMEOUT_MS · Default 1000

Time to wait for stats-loading requests to Kafka to finish (in ms).

TB_KAFKA_CONSUMER_STATS_CONSUMER_CONFIG

Additional configs separated by semicolon for the Kafka stats consumer, merged with the consumer defaults — TB_KAFKA_DEFAULT_CONSUMER_CONFIG (overriding them if keys conflict).

TB_KAFKA_HOME_PAGE_CONSUMER_CONFIG

Additional configs separated by semicolon for the Kafka admin client used on the home page, merged with the consumer defaults — TB_KAFKA_DEFAULT_CONSUMER_CONFIG (overriding them if keys conflict).

TB_KAFKA_HOME_PAGE_RESPONSE_TIMEOUT_MS · Default 30000

Time to wait for home page requests to Kafka to finish (in ms).

TB_KAFKA_MSG_ALL_TOPIC · Default tbmq.msg.all

Topic for persisting incoming PUBLISH messages.

TB_KAFKA_MSG_ALL_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:2147483648;partitions:16;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.msg.all topic.

TB_KAFKA_MSG_ALL_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.msg.all topic.

TB_KAFKA_MSG_ALL_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.msg.all topic.

TB_KAFKA_APP_PERSISTED_MSG_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.msg.app topics.

TB_KAFKA_APP_PERSISTED_MSG_ADDITIONAL_CONSUMER_CONFIG · Default max.poll.records:200

Additional Kafka consumer configs separated by semicolon for the tbmq.msg.app topics.

TB_KAFKA_APP_PERSISTED_MSG_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.msg.app topics.

TB_KAFKA_APP_PERSISTED_MSG_SHARED_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;replication.factor:1

Kafka topic properties separated by semicolon for application shared subscription topics.

TB_KAFKA_APP_PERSISTED_MSG_SHARED_ADDITIONAL_CONSUMER_CONFIG · Default max.poll.records:500

Additional Kafka consumer configs separated by semicolon for application shared subscription topics.

TB_KAFKA_APP_PERSISTED_MSG_SHARED_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for application shared subscription topics.

TB_KAFKA_DEVICE_PERSISTED_MSG_TOPIC · Default tbmq.msg.persisted

Topic for persisting messages related to Device clients before saving them in the database.

TB_KAFKA_DEVICE_PERSISTED_MSG_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:12;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.msg.persisted topic.

TB_KAFKA_DEVICE_PERSISTED_MSG_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.msg.persisted topic.

TB_KAFKA_DEVICE_PERSISTED_MSG_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.msg.persisted topic.

TB_KAFKA_RETAINED_MSG_TOPIC · Default tbmq.msg.retained

Topic for retained messages.

TB_KAFKA_RETAINED_MSG_TOPIC_PROPERTIES · Default segment.bytes:26214400;partitions:1;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.msg.retained topic.

TB_KAFKA_RETAINED_MSG_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.msg.retained topic.

TB_KAFKA_RETAINED_MSG_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.msg.retained topic.

TB_KAFKA_CLIENT_SESSION_TOPIC · Default tbmq.client.session

Topic for persisting client sessions.

TB_KAFKA_CLIENT_SESSION_TOPIC_PROPERTIES · Default segment.bytes:26214400;partitions:1;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.client.session topic.

TB_KAFKA_CLIENT_SESSION_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.client.session topic.

TB_KAFKA_CLIENT_SESSION_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.client.session topic.

TB_KAFKA_CLIENT_SUBSCRIPTIONS_TOPIC · Default tbmq.client.subscriptions

Topic for persisting client subscriptions.

TB_KAFKA_CLIENT_SUBSCRIPTIONS_TOPIC_PROPERTIES · Default segment.bytes:26214400;partitions:1;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.client.subscriptions topic.

TB_KAFKA_CLIENT_SUBSCRIPTIONS_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.client.subscriptions topic.

TB_KAFKA_CLIENT_SUBSCRIPTIONS_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.client.subscriptions topic.

TB_KAFKA_CLIENT_SESSION_EVENT_TOPIC · Default tbmq.client.session.event.request

Topic for sending client session event requests.

TB_KAFKA_CLIENT_SESSION_EVENT_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:24;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.client.session.event.request topic.

TB_KAFKA_CLIENT_SESSION_EVENT_ADDITIONAL_CONSUMER_CONFIG · Default max.poll.records:1000

Additional Kafka consumer configs separated by semicolon for the tbmq.client.session.event.request topic.

TB_KAFKA_CLIENT_SESSION_EVENT_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.client.session.event.request topic.

TB_KAFKA_CLIENT_SESSION_EVENT_RESPONSE_TOPIC_PREFIX · Default tbmq.client.session.event.response

Prefix for topics used to send client session event responses to Broker nodes.

TB_KAFKA_CLIENT_SESSION_EVENT_RESPONSE_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.client.session.event.response topics.

TB_KAFKA_CLIENT_SESSION_EVENT_RESPONSE_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.client.session.event.response topics.

TB_KAFKA_CLIENT_SESSION_EVENT_RESPONSE_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.client.session.event.response topics.

TB_KAFKA_DISCONNECT_CLIENT_COMMAND_TOPIC_PREFIX · Default tbmq.client.disconnect

Prefix for topics used to send disconnect client commands to Broker nodes.

TB_KAFKA_DISCONNECT_CLIENT_COMMAND_RESPONSE_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.client.disconnect topics.

TB_KAFKA_DISCONNECT_CLIENT_COMMAND_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.client.disconnect topics.

TB_KAFKA_DISCONNECT_CLIENT_COMMAND_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.client.disconnect topics.

TB_KAFKA_BASIC_DOWNLINK_MSG_TOPIC_PREFIX · Default tbmq.msg.downlink.basic

Prefix for topics for non-persistent Device messages that should be transferred to other Broker nodes.

TB_KAFKA_BASIC_DOWNLINK_MSG_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:12;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.msg.downlink.basic topics.

TB_KAFKA_BASIC_DOWNLINK_MSG_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.msg.downlink.basic topics.

TB_KAFKA_BASIC_DOWNLINK_MSG_ADDITIONAL_PRODUCER_CONFIG · Default batch.size:32768

Additional Kafka producer configs separated by semicolon for the tbmq.msg.downlink.basic topics.

TB_KAFKA_PERSISTED_DOWNLINK_MSG_TOPIC_PREFIX · Default tbmq.msg.downlink.persisted

Prefix for topics for persistent Device messages that should be transferred to other Broker nodes.

TB_KAFKA_PERSISTED_DOWNLINK_MSG_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:12;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.msg.downlink.persisted topics.

TB_KAFKA_PERSISTED_DOWNLINK_MSG_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.msg.downlink.persisted topics.

TB_KAFKA_PERSISTED_DOWNLINK_MSG_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.msg.downlink.persisted topics.

TB_KAFKA_APPLICATION_REMOVED_EVENT_TOPIC · Default tbmq.sys.app.removed

Topic for sending events to remove application topics when application clients are changed to device clients.

TB_KAFKA_APPLICATION_REMOVED_EVENT_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.sys.app.removed topic.

TB_KAFKA_APPLICATION_REMOVED_EVENT_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.sys.app.removed topic.

TB_KAFKA_APPLICATION_REMOVED_EVENT_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.sys.app.removed topic.

TB_KAFKA_HISTORICAL_DATA_TOTAL_TOPIC · Default tbmq.sys.historical.data

Topic for sending historical data stats to be summed from each broker.

TB_KAFKA_HISTORICAL_DATA_TOTAL_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.sys.historical.data topic.

TB_KAFKA_HISTORICAL_DATA_TOTAL_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.sys.historical.data topic.

TB_KAFKA_HISTORICAL_DATA_TOTAL_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.sys.historical.data topic.

TB_KAFKA_IE_DOWNLINK_TOPIC_PREFIX · Default tbmq.ie.downlink

Prefix for topics used to send integration configurations and validation requests from TBMQ to integration executors.

TB_KAFKA_IE_DOWNLINK_HTTP_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:6;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.ie.downlink.http topic.

TB_KAFKA_IE_DOWNLINK_HTTP_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.ie.downlink.http topic.

TB_KAFKA_IE_DOWNLINK_HTTP_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.ie.downlink.http topic.

TB_KAFKA_IE_DOWNLINK_KAFKA_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:6;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.ie.downlink.kafka topic.

TB_KAFKA_IE_DOWNLINK_KAFKA_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.ie.downlink.kafka topic.

TB_KAFKA_IE_DOWNLINK_KAFKA_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.ie.downlink.kafka topic.

TB_KAFKA_IE_DOWNLINK_MQTT_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:6;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.ie.downlink.mqtt topic.

TB_KAFKA_IE_DOWNLINK_MQTT_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.ie.downlink.mqtt topic.

TB_KAFKA_IE_DOWNLINK_MQTT_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.ie.downlink.mqtt topic.

TB_KAFKA_IE_UPLINK_TOPIC · Default tbmq.ie.uplink

Topic for sending messages and events from integration executors to TBMQ.

TB_KAFKA_IE_UPLINK_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:6;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.ie.uplink topic.

TB_KAFKA_IE_UPLINK_ADDITIONAL_CONSUMER_CONFIG · Default max.poll.records:50

Additional Kafka consumer configs separated by semicolon for the tbmq.ie.uplink topic. A pack’s events are processed one at a time per integration to keep their order, so max.poll.records bounds how long a single integration’s chain can get within one pack, and with it the pack processing time.

TB_KAFKA_IE_UPLINK_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.ie.uplink topic.

TB_KAFKA_IE_UPLINK_NOTIF_TOPIC_PREFIX · Default tbmq.ie.uplink.notifications

Prefix for topics used to send notifications or replies from integration executors to specific TBMQ nodes.

TB_KAFKA_IE_UPLINK_NOTIF_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.ie.uplink.notifications topics.

TB_KAFKA_IE_UPLINK_NOTIF_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.ie.uplink.notifications topic.

TB_KAFKA_IE_UPLINK_NOTIF_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.ie.uplink.notifications topic.

TB_KAFKA_IE_MSG_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.msg.ie topics.

TB_KAFKA_IE_MSG_ADDITIONAL_CONSUMER_CONFIG · Default max.poll.records:50

Additional Kafka consumer configs separated by semicolon for the tbmq.msg.ie topics.

TB_KAFKA_IE_MSG_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.msg.ie topics.

TB_KAFKA_IE_EVENT_MSG_TOPIC_PROPERTIES · Default retention.ms:86400000;segment.bytes:26214400;retention.bytes:104857600;partitions:1;replication.factor:1

Kafka topic properties separated by semicolon for the dedicated tbmq.ie.event lifecycle-event topics. Retention defaults shorter than the data topic since events are best-effort hints.

TB_KAFKA_IE_EVENT_MSG_ADDITIONAL_CONSUMER_CONFIG · Default max.poll.records:50

Additional Kafka consumer configs separated by semicolon for the tbmq.ie.event topics.

TB_KAFKA_IE_EVENT_MSG_ADDITIONAL_PRODUCER_CONFIG · Default max.block.ms:5000

Additional Kafka producer configs separated by semicolon for the tbmq.ie.event topics. Lifecycle events are produced synchronously on the MQTT processing thread. Before the first send to a given integration’s event topic, the producer provisions it through the admin client, which can block on queue.kafka.admin.command-timeout (30 s default) twice - once to list existing topics, once to create the missing one - a bound that dwarfs max.block.ms below it. A failed topic listing during a Kafka outage is cached empty for queue.kafka.admin.topics-cache-ttl-ms (300 s default, floored at 60 s), so every event sent in that window still pays a fresh topic-creation attempt. Lower max.block.ms to tighten the smaller, producer-side bound at the cost of more dropped events under Kafka pressure.

TB_KAFKA_INTERNODE_NOTIFICATIONS_TOPIC_PREFIX · Default tbmq.sys.internode.notifications

Prefix for topics used to send system notifications to Broker nodes.

TB_KAFKA_INTERNODE_NOTIFICATIONS_TOPIC_PROPERTIES · Default retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.sys.internode.notifications topics.

TB_KAFKA_INTERNODE_NOTIFICATIONS_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.sys.internode.notifications topics.

TB_KAFKA_INTERNODE_NOTIFICATIONS_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.sys.internode.notifications topics.

TB_KAFKA_BLOCKED_CLIENT_TOPIC · Default tbmq.client.blocked

Topic for blocked clients.

TB_KAFKA_BLOCKED_CLIENT_TOPIC_PROPERTIES · Default segment.bytes:26214400;partitions:1;replication.factor:1

Kafka topic properties separated by semicolon for the tbmq.client.blocked topic.

TB_KAFKA_BLOCKED_CLIENT_ADDITIONAL_CONSUMER_CONFIG

Additional Kafka consumer configs separated by semicolon for the tbmq.client.blocked topic.

TB_KAFKA_BLOCKED_CLIENT_ADDITIONAL_PRODUCER_CONFIG

Additional Kafka producer configs separated by semicolon for the tbmq.client.blocked topic.

TB_KAFKA_PREFIX

Common prefix for all Kafka topics, producers, consumer groups, and consumers. Defaults to empty string, meaning no prefix is applied.

TB_SERVICE_TYPE · Default tbmq

Microservice type. Accepted values: tbmq.

TB_SERVICE_ID

Unique ID for this service. Autogenerated if empty.

ACTORS_SYSTEM_THROUGHPUT · Default 5

Number of messages the actor system will process per actor before switching to processing messages for the next actor.

ACTORS_SYSTEM_SCHEDULER_POOL_SIZE · Default 1

Thread pool size for the actor system scheduler.

ACTORS_SYSTEM_MAX_ACTOR_INIT_ATTEMPTS · Default 10

Maximum number of attempts to initialize the actor before disabling it.

ACTORS_SYSTEM_DISCONNECT_WAIT_TIMEOUT_MS · Default 15000

Time the actor system waits during TBMQ node shutdown to process client disconnections (in ms).

ACTORS_SYSTEM_PERSISTED_DEVICE_DISPATCHER_POOL_SIZE · Default 8

Number of threads processing the Device actor’s messages.

ACTORS_SYSTEM_PERSISTED_DEVICE_WAIT_BEFORE_ACTOR_STOP_MINUTES · Default 5

Time to wait before deleting the Device actor after disconnect (in minutes).

ACTORS_SYSTEM_CLIENT_DISPATCHER_POOL_SIZE · Default 8

Number of threads processing the MQTT client actor messages.

ACTORS_SYSTEM_CLIENT_WAIT_BEFORE_GENERATED_ACTOR_STOP_SECONDS · Default 10

Time to wait before stopping the actor for clients that did not specify a client ID (in s).

ACTORS_SYSTEM_CLIENT_WAIT_BEFORE_NAMED_ACTOR_STOP_SECONDS · Default 60

Time to wait before stopping the actor for clients that specified a client ID (in s).

ACTORS_RULE_MAIL_THREAD_POOL_SIZE · Default 4

Thread pool size for the mail sender executor service.

ACTORS_RULE_MAIL_PASSWORD_RESET_THREAD_POOL_SIZE · Default 4

Thread pool size for the password reset emails executor service.

INTEGRATIONS_INIT_CONNECTION_CHECK_API_REQUEST_TIMEOUT_SEC · Default 20

Timeout for API connection check requests (in s).

INTEGRATIONS_CLEANUP_PERIOD_SEC · Default 10800

Execution period of the cleanup task for disconnected integrations (in s). Defaults to three hours.

INTEGRATIONS_CLEANUP_TTL_SEC · Default 604800

Administration TTL for cleaning up disconnected integrations (in s). The cleanup deletes both of the integration’s topics, clears its subscriptions, and evicts its lifecycle event types cluster-wide - the integration stops producing altogether, not just loses its topics. Defaults to one week. A value of 0 or negative disables this TTL.

DATABASE_TS_MAX_INTERVALS · Default 700

Maximum number of DB queries generated by a single API call to fetch time series records.

SQL_BATCH_SORT · Default true

Enables or disables sorting of entities before batch update. Should be enabled in cluster mode to avoid deadlocks.

SQL_TS_KV_PARTITIONING · Default DAYS

Partitioning size for timestamp key-value storage. Accepted values: DAYS, MONTHS, YEARS, INDEFINITE.

SQL_REMOVE_NULL_CHARS · Default true

Enables or disables removal of null characters from strValue before insert.

SQL_TS_BATCH_SIZE · Default 1000

Batch size for persisting time series inserts.

SQL_TS_BATCH_MAX_DELAY_MS · Default 100

Maximum timeout for time series entries queue polling (in ms).

SQL_TS_BATCH_THREADS · Default 3

Number of threads that execute batch insert/update statements for time series data. Must be a prime number (e.g., 3 or 5) for optimal hash distribution.

SQL_TS_LATEST_BATCH_SIZE · Default 1000

Batch size for persisting latest time series inserts.

SQL_TS_LATEST_BATCH_MAX_DELAY_MS · Default 50

Maximum timeout for latest time series entries queue polling (in ms).

SQL_TS_LATEST_BATCH_THREADS · Default 3

Number of threads that execute batch insert/update statements for latest time series data. Must be a prime number (e.g., 3 or 5) for optimal hash distribution.

SQL_UNAUTHORIZED_CLIENT_INSERT_BATCH_SIZE · Default 1000

Batch size for persisting unauthorized client inserts.

SQL_UNAUTHORIZED_CLIENT_INSERT_BATCH_MAX_DELAY_MS · Default 50

Maximum timeout for unauthorized client insert entries queue polling (in ms).

SQL_UNAUTHORIZED_CLIENT_INSERT_BATCH_THREADS · Default 3

Number of threads that execute batch insert/update statements for unauthorized client data. Must be a prime number (e.g., 3 or 5) for optimal hash distribution.

SQL_UNAUTHORIZED_CLIENT_DELETE_BATCH_SIZE · Default 1000

Batch size for processing unauthorized client deletes.

SQL_UNAUTHORIZED_CLIENT_DELETE_BATCH_MAX_DELAY_MS · Default 50

Maximum timeout for unauthorized client delete entries queue polling (in ms).

SQL_UNAUTHORIZED_CLIENT_DELETE_BATCH_THREADS · Default 3

Number of threads that execute batch delete statements for unauthorized client data. Must be a prime number (e.g., 3 or 5) for optimal hash distribution.

SQL_EVENTS_BATCH_SIZE · Default 10000

Batch size for persisting events updates.

SQL_EVENTS_BATCH_MAX_DELAY_MS · Default 100

Maximum timeout for events entries queue polling (in ms).

SQL_EVENTS_BATCH_THREADS · Default 3

Number of threads that execute batch insert/update statements for events. Must be a prime number (e.g., 3 or 5) for optimal hash distribution.

SQL_EVENTS_REGULAR_PARTITION_SIZE_HOURS · Default 168

Number of hours per events partition. Defaults to one week (168 h).

SQL_EVENTS_MAX_SYMBOLS · Default 4096

Maximum number of symbols per event. Event content will be truncated if it exceeds this limit.

SQL_TTL_TS_ENABLED · Default true

Enables or disables TTL (Time To Live) for time series records.

SQL_TTL_TS_EXECUTION_INTERVAL_MS · Default 86400000

Execution period of the TTL task for time series records (in ms). Defaults to one day.

SQL_TTL_TS_KEY_VALUE_TTL · Default 604800

System TTL value for time series records (in s). Defaults to seven days. Use 0 to disable expiration.

SQL_TTL_UNAUTHORIZED_CLIENT_ENABLED · Default true

Enables or disables TTL (Time To Live) for unauthorized clients.

SQL_TTL_UNAUTHORIZED_CLIENT_EXECUTION_INTERVAL_MS · Default 86400000

Execution period of the TTL task for unauthorized clients (in ms). Defaults to one day.

SQL_TTL_UNAUTHORIZED_CLIENT_TTL · Default 259200

System TTL value for unauthorized clients (in s). Defaults to three days. Use 0 to disable expiration.

SQL_TTL_EVENTS_ENABLED · Default true

Enables or disables TTL (Time To Live) for event records.

SQL_TTL_EVENTS_EXECUTION_INTERVAL_MS · Default 3600000

Execution interval for the TTL cleanup task for events (in ms). Defaults to 1 hour.

SQL_TTL_EVENTS_TTL_SEC · Default 1209600

TTL for events (in s). Defaults to 14 days. Cleanup accuracy depends on the sql.events.partition_size parameter.

REDIS_LETTUCE_CMDS_AUTO_FLUSH_ENABLED · Default true

Enables or disables auto-flush. If disabled, commands are buffered and flushed based on cmd count or time interval.

REDIS_LETTUCE_BUFFERED_CMDS_COUNT · Default 5

Number of buffered commands before flush is triggered. Used when auto-flush is disabled.

REDIS_LETTUCE_FLUSH_INTERVAL_MS · Default 5

Maximum time to buffer commands before flushing, regardless of cmd count (in ms).

REDIS_LETTUCE_COMMAND_TIMEOUT_SEC · Default 30

Maximum time to wait for a Lettuce command to complete (in s). Affects health checks and any command execution (e.g. GET, SET, PING). Reduce this value to fail fast if Redis is unresponsive.

REDIS_LETTUCE_SHUTDOWN_QUIET_PERIOD_SEC · Default 1

Quiet period for the Lettuce client shutdown (in s).

REDIS_LETTUCE_SHUTDOWN_TIMEOUT_SEC · Default 10

Shutdown timeout for the Lettuce client (in s).

REDIS_LETTUCE_CLUSTER_TOPOLOGY_REFRESH_ENABLED · Default false

Enables or disables periodic cluster topology updates. Useful for Redis Cluster setup to handle topology changes, such as node failover, restarts, or IP address changes.

REDIS_LETTUCE_CLUSTER_TOPOLOGY_REFRESH_PERIOD_SEC · Default 60

Interval for periodic cluster topology updates (in s).

SPRING_DATA_JPA_REPOSITORIES_ENABLED · Default true

Enables or disables the Spring Data JPA repositories support.

SPRING_JPA_OPEN_IN_VIEW · Default false

Enables or disables OSIV.

SPRING_JPA_HIBERNATE_DDL_AUTO · Default none

Hibernate DDL behavior. Accepted values: none, validate, update, create-drop. Spring Boot chooses a default based on whether it thinks your database is embedded (default create-drop) or not (default none).

SPRING_DRIVER_CLASS_NAME · Default org.postgresql.Driver

Database driver for Spring JPA.

SPRING_DATASOURCE_URL · Default jdbc:postgresql://localhost:5432/thingsboard_mqtt_broker

Database connection URL.

SPRING_DATASOURCE_USERNAME · Default postgres

Database username.

SPRING_DATASOURCE_PASSWORD · Default postgres

Database user password.

SPRING_DATASOURCE_MAXIMUM_POOL_SIZE · Default 16

Maximum number of connections in the pool. Grows with demand to prevent resource exhaustion affecting performance and availability.

SPRING_DATASOURCE_MAX_LIFETIME · Default 600000

Maximum lifetime of a connection (in ms). The connection is removed only when closed. Defaults to 10 minutes.

SPRING_DATASOURCE_CONNECTION_TIMEOUT_MS · Default 30000

Maximum time HikariCP will wait to acquire a connection from the pool (in ms). If exceeded, an exception is thrown. Defaults to 30 s.

SPRING_LIFECYCLE_TIMEOUT_PER_SHUTDOWN_PHASE · Default 1m

The server waits for active requests to finish up to the specified time before graceful shutdown.

SPRING_JPA_HIBERNATE_JDBC_LOB_NON_CONTEXTUAL_CREATION · Default true

Enables or disables Hibernate’s own (non-contextual) LOB implementation. When enabled, replaces JDBC contextual LOB creation to fix a Postgres JPA error.

SPRING_JPA_HIBERNATE_ORDER_BY_DEFAULT_NULL_ORDERING · Default last

Default ordering for null values.

SPRING_DATA_REDIS_REPOSITORIES_ENABLED · Default false

Enables or disables Spring Data Redis repositories scanning.

SPRING_FREEMARKER_CHECK_TEMPLATE_LOCATION · Default false

Enables or disables the Spring Freemarker check that the template location exists.

SPRING_MVC_ASYNC_REQUEST_TIMEOUT · Default 30000

Default timeout for asynchronous requests (in ms).

SPRING_MVC_PATH_MATCH_MATCHING_STRATEGY · Default ANT_PATH_MATCHER

Path matching strategy used for Swagger endpoints.

JWT_TOKEN_EXPIRATION_TIME · Default 9000

User JWT Token expiration time (in s). Defaults to 2.5 hours.

JWT_REFRESH_TOKEN_EXPIRATION_TIME · Default 604800

User JWT Refresh Token expiration time (in s). Defaults to 1 week.

JWT_TOKEN_ISSUER · Default thingsboard.io

User JWT Token issuer.

JWT_TOKEN_SIGNING_KEY · Default Qk1xUnloZ0VQTlF1VlNJQXZ4cWhiNWt1cVd1ZzQ5cWpENUhMSHlaYmZIM0JrZ2pPTVlhQ3N1Z0ZMUnd0SDBieg==

User JWT Token sign key.

SECURITY_USER_TOKEN_ACCESS_ENABLED · Default true

Enables or disables access to other Administrators’ JWT tokens by the System Administrator.

SECURITY_USER_LOGIN_CASE_SENSITIVE · Default true

Enables or disables case-sensitive username login.

SECURITY_UNAUTH_CLIENTS_ENABLED · Default true

Enables or disables persistence of unauthorized client connection attempts. When disabled, unauthorized clients are logged only and are not stored. When enabled, unauthorized client entries are persisted to the database.

MQTT_CONNECT_THREADS · Default 4

Number of threads for the client connection thread pool.

MQTT_MSG_SUBSCRIPTIONS_PARALLEL_PROCESSING · Default false

Enables or disables parallel processing of subscriptions for published messages. Helpful when the PUBLISH message should be delivered to lots of subscribers. It is recommended to measure the impact of this parameter before enabling it in production.

MQTT_PRE_CONNECT_QUEUE_MAX_SIZE · Default 1000

Maximum number of messages stored in the queue before the client connects and starts processing them.

MQTT_MAX_IN_FLIGHT_MSGS · Default 1000

Maximum number of PUBLISH messages not yet acknowledged.

MQTT_FLOW_CONTROL_ENABLED · Default true

Enables or disables the MQTT 5 flow control feature for the server. If disabled, the server will not control the number of messages sent to subscribers via “Receive Maximum”. Also applies to MQTT 3.x clients when enabled. “Receive Maximum” for MQTT 3.x clients can be configured using MQTT_FLOW_CONTROL_MQTT_3X_RECEIVE_MAX.

MQTT_FLOW_CONTROL_TTL_SWEEP_INTERVAL_MS · Default ${mqtt.flow-control.timeout:${MQTT_FLOW_CONTROL_TIMEOUT:10000}}

Interval between sweeps of the per-client delayed-message buffer that drops messages whose age exceeds ‘ttl’ (in ms). Drain on ACK/writability is event-driven, so this sweeper only handles TTL expiry. Defaults to 10 s. The legacy YAML key ‘mqtt.flow-control.timeout’ and env var MQTT_FLOW_CONTROL_TIMEOUT remain honoured as fallbacks for upgrade compatibility.

MQTT_FLOW_CONTROL_TTL · Default 600

Time to store delayed messages for subscribers (in s). Delayed messages are those that cannot be sent immediately due to flow control restrictions. Defaults to 10 minutes.

MQTT_FLOW_CONTROL_DELAYED_QUEUE_MAX_SIZE · Default 1000

Maximum allowed queue length for delayed messages — published to the client when the in-flight window is full.

MQTT_FLOW_CONTROL_MQTT_3X_RECEIVE_MAX · Default 65535

Receive maximum value for MQTT 3.x clients.

MQTT_KEEP_ALIVE_MONITORING_DELAY_MS · Default 1000

Interval between subsequent checks for inactive clients (in ms).

MQTT_KEEP_ALIVE_MAX_KEEP_ALIVE_SEC · Default 600

Maximum keep-alive value allowed by the server (in s). Applies to MQTT v5 clients. Defaults to 10 minutes.

MQTT_TOPIC_MAX_SEGMENTS_COUNT · Default 0

Maximum number of segments in topics. Excessively large values may cause processing errors. Defaults to 0, which disables the limit.

MQTT_TOPIC_ALIAS_MAX · Default 10

Maximum number of topic aliases per connection. Defaults to 0, which disables the Topic Alias feature.

MQTT_TOPIC_MIN_LENGTH_FOR_ALIAS_REPLACEMENT · Default 50

Minimum topic name length that the broker may replace with a topic alias (e.g., topics with more than 50 characters).

MQTT_SUBSCRIPTION_ROOT_MULTI_LVL_WILDCARD · Default true

Enables or disables client subscriptions to the root multi-level wildcard “#”. When true (default), clients can subscribe to “#” and receive a copy of every message published to the broker. Useful for debugging or firehose-style monitoring services. When false, clients are denied subscription to the exact topic “#” but can still subscribe to specific paths (e.g., “sensors/#”) or individual topics. Recommended for production to prevent accidental or malicious data leakage.

MQTT_SHARED_SUBSCRIPTIONS_PROCESSING_TYPE · Default ROUND_ROBIN

Processing strategy for distributing messages among clients in a shared subscription. Accepted values: ROUND_ROBIN.

MQTT_SUB_TRIE_WAIT_FOR_CLEAR_LOCK_MS · Default 100

Maximum pause for clearing subscription storage from empty nodes (in ms). If a wait is unsuccessful, subscribing clients will be resumed, but the clear will fail.

MQTT_SUB_TRIE_CLEAR_NODES_CRON · Default 0 0 0 * * *

Cron job to schedule clearing of empty subscription nodes. Defaults to ‘every day at midnight’.

MQTT_SUB_TRIE_CLEAR_NODES_ZONE · Default UTC

Timezone for the subscription clearing cron-job.

MQTT_RETAIN_MSG_TRIE_WAIT_FOR_CLEAR_LOCK_MS · Default 100

Maximum pause for clearing retain msg storage from empty nodes (in ms). If a wait is unsuccessful, retain messages processing will be resumed, but the clear will fail.

MQTT_RETAIN_MSG_TRIE_CLEAR_NODES_CRON · Default 0 0 0 * * *

Cron job to schedule clearing of empty retain msg nodes. Defaults to ‘every day at midnight’.

MQTT_RETAIN_MSG_TRIE_CLEAR_NODES_ZONE · Default UTC

Timezone for the retain msg clearing cron-job.

MQTT_RETAIN_MSG_EXPIRY_PROCESSING_PERIOD_MS · Default 60000

Processing period for clearing retained messages by the MQTT expiry feature (in ms).

MQTT_CLIENT_SESSION_EXPIRY_CRON · Default 0 0 * ? * *

Cron job to schedule clearing of expired and inactive client sessions. Defaults to ‘every hour’, e.g. at 20:00:00 UTC.

MQTT_CLIENT_SESSION_EXPIRY_ZONE · Default UTC

Timezone for the client sessions clearing cron-job.

MQTT_CLIENT_SESSION_EXPIRY_MAX_EXPIRY_INTERVAL · Default 604800

Maximum allowed expiry interval for inactive sessions (in s). Defaults to one week.

MQTT_CLIENT_SESSION_EXPIRY_TTL · Default 604800

Administration TTL for clearing sessions that do not expire by session expiry interval (in s). (e.g. MQTTv3 cleanSession=false or MQTTv5 cleanStart=false && sessionExpiryInterval == 0). Defaults to one week. A value of 0 or negative disables this TTL.

MQTT_3_1_MAX_CLIENT_ID_LENGTH · Default 1024

Maximum client ID length for MQTT 3.1.

MQTT_MSG_WRITE_AND_FLUSH · Default true

Enables or disables immediate flush of each message published to non-persistent subscribers. When disabled, messages are buffered and flushed periodically.

MQTT_BUFFERED_MSG_COUNT · Default 5

Number of messages buffered in the channel before the flush is made. Used when MQTT_MSG_WRITE_AND_FLUSH = false.

MQTT_BUFFERED_CACHE_MAX_SIZE · Default 10000

When either MQTT_MSG_WRITE_AND_FLUSH or MQTT_PERSISTENT_MSG_WRITE_AND_FLUSH is set to false, the broker buffers outgoing messages in the outbound channel to improve throughput. The respective buffer sizes are controlled by MQTT_BUFFERED_MSG_COUNT (for non-persistent clients) and MQTT_PERSISTENT_BUFFERED_MSG_COUNT (for persistent clients). Maximum number of session entries stored in the flush state cache. When the cache exceeds this size, the least recently used sessions are evicted and their pending message buffers are flushed automatically.

MQTT_BUFFERED_CACHE_EXPIRY_MS · Default 300000

Expiry time for an inactive session entry in the flush cache (in ms). A session is considered inactive if it receives no new messages during this period. Upon expiration, the session is evicted from the cache and its buffer is flushed. Defaults to 5 minutes.

MQTT_BUFFERED_SCHEDULER_INTERVAL_MS · Default 100

Interval at which the scheduler checks all sessions in the cache for potential flushing (in ms). A smaller value results in more frequent flush checks.

MQTT_BUFFERED_IDLE_FLUSH_MS · Default 200

Maximum time a session can remain idle before its message buffer is automatically flushed to the client (in ms). A flush occurs either when the buffer limit is reached or when this timeout elapses.

MQTT_PERSISTENT_SESSION_DEVICE_PERSISTED_MESSAGES_LIMIT · Default 10000

Maximum number of PUBLISH messages stored for each persisted DEVICE client.

MQTT_PERSISTENT_SESSION_DEVICE_PERSISTED_MESSAGES_TTL · Default 604800

TTL of persisted DEVICE messages (in s). Defaults to one week.

MQTT_PERSISTENT_MSG_WRITE_AND_FLUSH · Default true

Enables or disables immediate flush of each message published to persistent DEVICE client subscribers. When disabled, messages are buffered and flushed periodically.

MQTT_PERSISTENT_BUFFERED_MSG_COUNT · Default 5

Number of messages buffered in the channel before the flush is made. Used when MQTT_PERSISTENT_MSG_WRITE_AND_FLUSH = false.

MQTT_APP_MSG_WRITE_AND_FLUSH · Default false

Enables or disables immediate flush of each message published to persistent APPLICATION client subscribers. When disabled, messages are buffered and flushed periodically.

MQTT_APP_BUFFERED_MSG_COUNT · Default 10

Number of messages buffered in the channel before the flush is made. Used when MQTT_APP_MSG_WRITE_AND_FLUSH = false.

MQTT_TOTAL_RATE_LIMITS_ENABLED · Default false

Enables or disables the cluster-wide total throughput quota. The quota counts MQTT PUBLISH packets against one budget shared by the whole cluster, and charges them when the publish is processed — before it is stored. A publish costs 1 packet for the incoming message plus 1 for every subscriber, shared subscription group and integration it is routed to. Once a message has been charged and stored it is delivered without any further charge: a persistent session that reconnects after being offline receives its whole backlog as fast as the cluster can deliver it, however large, and QoS 1/2 retransmissions are free. The one exception is a retained message sent to a client that subscribes later — that is a new outgoing packet which nothing has paid for yet, so it is charged when the subscription is made. On overuse, incoming publishes are refused (MQTT 5: PUBACK/PUBREC with reason code 0x97 QUOTA_EXCEEDED; MQTT 3.x: disconnect) and the copies for subscribers beyond the remaining budget are never stored, which is reported in the droppedMsgs statistic. If Redis becomes unavailable the quota keeps granting for degraded-grace-ms so a failover passes unnoticed, then stops granting rather than serve unmetered traffic indefinitely (see the throughputQuotaDegraded metric and degraded-grace-ms below).

MQTT_TOTAL_RATE_LIMITS_CONFIG · Default 50000:60

Quota bucket definition. Comma-separated list of capacity:seconds bandwidths. Each bandwidth refills continuously over the given period, so the sustained rate is capacity / seconds and the capacity is the volume of unused budget that accumulates for a burst. The default 50000:60 allows ~833 messages per second sustained, and after 10 idle seconds a burst of 8333 is available at once. The maximum burst is the WHOLE capacity, so after a full idle minute the default admits 50000 messages at once — 60x the sustained rate. The capacity is also the largest amount a SINGLE publish can charge, because a publish pays for its whole fan-out at once — keep it above your widest fan-out. Note that configuring MORE THAN ONE bandwidth lowers that ceiling to the smallest capacity among them (bucket4j requires every bandwidth to hold the tokens for a single charge), so 1000:1,50000:60 would sustain the same ~833 per second but truncate any fan-out above 1000, even on an idle cluster. To allow a smaller burst without capping the fan-out, keep ONE bandwidth and shorten the period at the same ratio rather than adding a second one: 5000:6 sustains the same ~833 messages per second as 50000:60 with a tenth of the burst. Your widest fan-out is the floor on capacity, so a burst ceiling below it cannot be expressed — one publish must always be able to charge for every subscriber it reaches. Applied on broker start. Changing this value carries the spent tokens over proportionally while a single bandwidth is configured; with more than one it resets the token counters across the cluster instead, granting one full interval of fresh budget.

MQTT_TOTAL_RATE_LIMITS_BLOCK_SIZE · Default 0

Number of quota tokens a broker node draws from Redis per replenishment round-trip. Defaults to 0, which derives max(1, sustainedRate / 10) from the config above. Larger blocks reduce Redis calls but let idle nodes hold more of the cluster budget between lease-return ticks. A publish whose fan-out exceeds the node’s drawn tokens draws the shortfall on demand, so this value does not cap a single publish.

MQTT_TOTAL_RATE_LIMITS_LEASE_RETURN_MS · Default 1000

Period of the background tick that returns a node’s unused drawn tokens to the shared Redis bucket (in ms). Defaults to 1000. Set to 0 to disable the return tick — but note that a node which draws a block and then goes quiet then holds those tokens indefinitely, so the cluster’s effective budget shrinks by the sum of every idle node’s lease. Leave the tick on unless traffic is even across all nodes.

MQTT_TOTAL_RATE_LIMITS_DEGRADED_GRACE_MS · Default 30000

How long the quota keeps granting after it loses the shared Redis bucket (in ms). Defaults to 30000, which covers a Redis Cluster or Sentinel failover, so a node rides out the switch without refusing anything. Past this the node stops granting: it cannot tell how much budget the cluster has left, and continuing would serve unmetered traffic for as long as Redis stays away. The window measures ONE continuous outage — it starts when the first draw fails and is NOT extended by later failures — and any successful draw resets it, so an intermittent Redis never accumulates toward the deadline. Raising it trades enforcement for availability; 0 refuses the moment a draw fails. Note that once the window has elapsed, publishes are refused exactly as they are on a spent budget: reported in droppedMsgs, MQTT 5 clients get 0x97 QUOTA_EXCEEDED and MQTT 3.x clients are disconnected.

MQTT_INCOMING_RATE_LIMITS_ENABLED · Default false

Enables or disables publish rate limits per client for incoming messages to the broker.

MQTT_INCOMING_RATE_LIMITS_CLIENT_CONFIG · Default 10:1,300:60

Limits the count of publish messages per publisher per time interval (in s). Comma-separated list of limit:seconds pairs. Example: 10 messages per second or 300 messages per minute.

MQTT_OUTGOING_RATE_LIMITS_ENABLED · Default false

Enables or disables publish rate limits per client for outgoing messages to subscribers. Applies only to non-persistent subscribers with QoS = 0 (“AT_MOST_ONCE”).

MQTT_OUTGOING_RATE_LIMITS_CLIENT_CONFIG · Default 10:1,300:60

Limits the count of publish messages per subscriber per time interval (in s). Comma-separated list of limit:seconds pairs. Example: 10 messages per second or 300 messages per minute.

MQTT_DEVICE_PERSISTED_MSGS_RATE_LIMITS_ENABLED · Default false

Enables or disables Device clients persisted messages rate limits for the broker (per whole cluster).

MQTT_DEVICE_PERSISTED_MSGS_RATE_LIMITS_CONFIG · Default 100:1,1000:60

Limits the count of Device clients persisted messages per time interval (in s). Comma-separated list of limit:seconds pairs. Example: 100 messages per second or 1000 messages per minute. Applied on broker start. Changing this value resets the token counters across the cluster when more than one limit:seconds pair is configured, granting one full interval of fresh budget.

MQTT_SESSIONS_LIMIT · Default 0

Total limit of sessions (connected + disconnected) stored on the broker, applied collectively across the cluster, not per node. For example, when set to 1000, the entire cluster can store 1000 sessions in total. This is a soft limit, meaning slightly more sessions may be stored. Defaults to 0, which disables the limit.

MQTT_APPLICATION_CLIENTS_LIMIT · Default 0

Total limit for Application persistent clients and external system integrations. Defaults to 0, which disables the limit.

MQTT_HANDLER_ALL_MSG_CALLBACK_THREADS · Default 2

Number of threads in the pool for processing all publish messages callbacks after sending them to Kafka.

MQTT_HANDLER_DEVICE_MSG_CALLBACK_THREADS · Default 2

Number of threads in the pool for processing device persisted publish messages callbacks after sending them to Kafka.

MQTT_HANDLER_APP_MSG_CALLBACK_THREADS · Default 2

Number of threads in the pool for processing application persisted publish messages callbacks after sending them to Kafka.

MQTT_HANDLER_DOWNLINK_MSG_CALLBACK_THREADS · Default 2

Number of threads in the pool for processing downlink messages callbacks after sending them to Kafka.

MQTT_RESPONSE_INFO

Response info value for the MQTT 5 request-response feature, returned to clients that request it. If not set, the broker will not reply with response info to MQTT 5 clients that connect with “request response info” = 1. Set it to the topic to be used for the request-response feature, e.g. “example/”.

BLOCKED_CLIENT_CLEANUP_PERIOD_MINUTES · Default 5

Execution period of the cleanup task for expired blocked clients (in minutes). Defaults to five minutes.

BLOCKED_CLIENT_CLEANUP_TTL_MINUTES · Default 10080

TTL for expired blocked clients (in minutes). After this time, the expired blocked client is removed completely. Defaults to one week.

MQTTS_CA_CERT · Default cafile.pem

Path to the MQTT root CA certificate file.

MQTTS_CA_CERT_NAME · Default tbmq-ca-cert.pem

Filename for the downloaded MQTT root CA certificate.

CACHE_STATS_ENABLED · Default true

Enables or disables cache stats logging.

CACHE_STATS_INTERVAL_SEC · Default 60

Cache stats logging interval (in s).

CACHE_PREFIX

Common prefix for all cache keys. Defaults to empty string, meaning no prefix is applied.

CACHE_SPECS_MQTT_CLIENT_CREDENTIALS_TTL · Default 1440

Cache TTL (in minutes). Defaults to 1 day.

CACHE_SPECS_BASIC_CREDENTIALS_PASSWORD_TTL · Default 1

Cache TTL (in minutes). Recommended to set a small value to limit credential storage duration (e.g., 1-5 minutes).

CACHE_SPECS_SSL_REGEX_BASED_CREDENTIALS_TTL · Default 1440

Cache TTL (in minutes). Defaults to 1 day.

CACHE_SPECS_CLIENT_SESSION_CREDENTIALS_TTL · Default 0

Cache TTL (in minutes). Defaults to 0, meaning the cache is eternal.

CACHE_SPECS_CLIENT_MQTT_VERSION_TTL · Default 0

Cache TTL (in minutes). Defaults to 0, meaning the cache is eternal.

REDIS_CONNECTION_TYPE · Default standalone

Connection type. Accepted values: standalone, cluster, sentinel.

REDIS_HOST · Default localhost

Redis connection host.

REDIS_PORT · Default 6379

Redis connection port.

REDIS_USE_DEFAULT_CLIENT_CONFIG · Default true

Enables or disables the default Redis client configuration.

REDIS_CLIENT_NAME · Default standalone

Client name. Applies only when not using the default ClientConfig.

REDIS_CLIENT_CONNECT_TIMEOUT · Default 30000

Connection timeout (in ms). Applies only when not using the default ClientConfig.

REDIS_CLIENT_READ_TIMEOUT · Default 60000

Read timeout (in ms). Applies only when not using the default ClientConfig.

REDIS_CLIENT_USE_POOL_CONFIG · Default false

Enables or disables pool config. Applies only when not using the default ClientConfig.

REDIS_NODES

Comma-separated list of “host:port” pairs to bootstrap from.

REDIS_MAX_REDIRECTS · Default 12

Maximum number of redirects to follow when executing commands across the cluster.

REDIS_CLUSTER_USE_DEFAULT_POOL_CONFIG · Default true

Enables or disables use of the default pool config. When false, the pool config is built from the ‘pool_config’ section values.

REDIS_MASTER

Name of the master node.

REDIS_SENTINELS

Comma-separated list of “host:port” pairs of sentinels.

REDIS_SENTINEL_USERNAME

Optional. Username to authenticate with the Sentinel (Sentinel ACL).

REDIS_SENTINEL_PASSWORD

Password to authenticate with the Sentinel.

REDIS_SENTINEL_USE_DEFAULT_POOL_CONFIG · Default true

Enables or disables use of the default pool config. When false, the pool config is built from the ‘pool_config’ section values.

REDIS_DB · Default 0

DB index.

REDIS_USERNAME

Optional. Username for Redis ACL authentication (Redis 6+).

REDIS_PASSWORD

DB password.

REDIS_SSL_ENABLED · Default false

Enables or disables TLS for Redis connections. Applies to all connection types: standalone, sentinel, cluster.

REDIS_SSL_CERT_FILE

Path to the CA certificate PEM file used to verify the Redis server certificate. Required when SSL is enabled.

REDIS_SSL_USER_CERT_FILE

Optional. Path to the client certificate PEM file. Required only for mutual TLS (mTLS).

REDIS_SSL_USER_KEY_FILE

Optional. Path to the client private key PEM file. Required only for mutual TLS (mTLS).

REDIS_POOL_CONFIG_MAX_TOTAL · Default 128

Maximum number of connections that can be allocated by the connection pool.

REDIS_POOL_CONFIG_MAX_IDLE · Default 128

Maximum number of idle connections that can be maintained in the pool without being closed.

REDIS_POOL_CONFIG_MIN_IDLE · Default 16

Minimum number of idle connections that can be maintained in the pool without being closed.

REDIS_POOL_CONFIG_TEST_ON_BORROW · Default true

Enables or disables the PING command sent when a connection is borrowed.

REDIS_POOL_CONFIG_TEST_ON_RETURN · Default true

Enables or disables testing the connection before returning it to the pool.

REDIS_POOL_CONFIG_TEST_WHILE_IDLE · Default true

Enables or disables using the PING command to monitor connection validity during idle resource monitoring. Invalid connections are destroyed.

REDIS_POOL_CONFIG_MIN_EVICTABLE_MS · Default 60000

Minimum time a connection must be idle before it can be evicted from the pool (in ms).

REDIS_POOL_CONFIG_EVICTION_RUNS_MS · Default 30000

Time interval between two consecutive eviction runs (in ms).

REDIS_POOL_CONFIG_MAX_WAIT_MS · Default 60000

Maximum time a client is willing to wait for a connection from the pool when all connections are exhausted (in ms).

REDIS_POOL_CONFIG_NUMBER_TESTS_PER_EVICTION_RUN · Default 3

Number of connections to test for eviction during each eviction run.

REDIS_POOL_CONFIG_BLOCK_WHEN_EXHAUSTED · Default true

Enables or disables blocking when a thread requests a connection from an exhausted pool.

STATS_ENABLED · Default true

Enables or disables stats printing to the logs.

STATS_PRINT_INTERVAL_MS · Default 60000

Print interval for statistics (in ms). Defaults to 1 minute.

STATS_TIMER_PERCENTILES · Default 0.5

Metrics percentiles returned by actuator for timer metrics. List of comma-separated double values.

APPLICATION_PROCESSOR_STATS_ENABLED · Default true

Enables or disables per-Application-client processing stats. When enabled, each Application client gets its own set of counters tagged with ‘clientId’ (deregistered when the client disconnects); the appProcessor.latency timers are aggregated globally (keyed only by packetType, with no per-client tag). On a broker with very many Application clients the per-client counter cardinality can be high, so enable only when per-client stats are needed.

STATS_SYSTEM_INFO_PERSIST_FREQUENCY_SEC · Default 60

Persistence frequency of system info such as CPU and memory usage (in s).

HISTORICAL_DATA_REPORT_ENABLED · Default true

Enables or disables historical data stats reporting and persistence to the time series.

HISTORICAL_DATA_REPORT_INTERVAL · Default 1

Collection period for per-broker statistics (in minutes, range 1-60). Used in the cron expression.

HISTORICAL_DATA_REPORT_ZONE · Default UTC

Timezone for the historical data stats processing.

HEALTH_DISKSPACE_ENABLED · Default false

Enables or disables disk space health check.

HEALTH_SHOW_DETAILS · Default never

Visibility of full component details in the health endpoint response (e.g., Redis, DB, TBMQ). Accepted values: never - always hide details (default if security is enabled). when-authorized - show details only to authenticated users. always - always include full health details in the response.

METRICS_ENDPOINTS_EXPOSE · Default health,info,prometheus

Actuator endpoints exposed via HTTP. Use ‘health,info’ to expose only basic health and information endpoints. To expose Prometheus metrics, include ‘prometheus’ in the list (e.g., ‘health,info,prometheus’).

MVC_CORS_API_ALLOWED_ORIGIN_PATTERNS · Default *

Comma-separated list of origins to allow. ‘*’ allows all origins. When not set, CORS support is disabled.

MVC_CORS_API_ALLOWED_METHODS · Default *

Comma-separated list of methods to allow. ‘*’ allows all methods.

MVC_CORS_API_ALLOWED_HEADERS · Default *

Comma-separated list of headers to allow in a request. ‘*’ allows all headers.

MVC_CORS_API_MAX_AGE · Default 1800

How long the response from a pre-flight request can be cached by clients (in s).

MVC_CORS_API_ALLOW_CREDENTIALS · Default true

Enables or disables credentials support. Defaults to not supported when not set.

SWAGGER_ENABLED · Default true

Enables or disables Swagger API docs.

SWAGGER_DEFAULT_PRODUCES_MEDIA_TYPE · Default application/json

Swagger default produces media-type.

SWAGGER_API_PATH · Default /api/**

General Swagger match pattern for Swagger UI links.

SWAGGER_SECURITY_PATH_REGEX · Default /api/.*

General Swagger security match pattern path for Swagger UI links.

SWAGGER_NON_SECURITY_PATH_REGEX · Default /api/noauth.*

Non-security API path match pattern for Swagger UI links.

SWAGGER_TITLE · Default TBMQ REST API

Title on the API doc UI page.

SWAGGER_DESCRIPTION · Default TBMQ open-source REST API documentation

Description on the API doc UI page.

SWAGGER_CONTACT_NAME · Default TBMQ team

Contact name on the API doc UI page.

SWAGGER_CONTACT_URL · Defaulthttps://tbmq.io/

Contact URL on the API doc UI page.

SWAGGER_CONTACT_EMAIL · Default info@thingsboard.io

Contact email on the API doc UI page.

SWAGGER_LICENSE_TITLE · Default Apache License Version 2.0

License title on the API doc UI page.

SWAGGER_LICENSE_URL · Defaulthttps://github.com/thingsboard/tbmq/blob/main/LICENSE

Link to the license body on the API doc UI page.

SWAGGER_VERSION

Version of the API doc to display. Defaults to the package version.

SWAGGER_GROUP_NAME · Default TBMQ

Group name (definition) on the API doc UI page.

ANALYSIS_LOG_ENABLED · Default true

Enables or disables analysis logging.

ANALYSIS_LOG_ALL_CLIENTS · Default false

Enables or disables logging events for all clients. When true, ignores the ‘analyzed-client-ids’ list.

ANALYSIS_LOG_CLIENT_IDS

Comma-separated list of client IDs for which additional events will be logged. Example env var: ANALYSIS_LOG_CLIENT_IDS=client1,client2.