- How to change configuration parameters?
- Configuration parameters
- HTTP server parameters
- MQTT listeners parameters
- Kafka parameters
- General service parameters
- Actor system parameters
- Database time series parameters
- SQL configuration parameters
- Redis lettuce configuration parameters
- SQL DAO configuration parameters
- General Spring parameters
- Security parameters
- MQTT parameters
- Cache parameters
- Redis configuration parameters
- Statistics parameters
- Historical data statistics parameters
- Metrics management parameters
- Spring CORS configuration
- Spring doc common parameters
- Swagger common parameters
- Application info parameters
- Analysis parameters
This guide will help you become familiar with TBMQ configuration files and parameters. We strongly recommend configuring TBMQ using environment variables. This way, you won’t need to merge the configuration files when a new platform release arrives.
The list of available configuration parameters and corresponding environment variables can be found here.
How to change configuration parameters?
Docker-Based deployment
If TBMQ is installed in a Docker Compose environment, you can edit the scripts and add environment variables for the corresponding containers. For more details, refer to the Docker documentation.
K8S-Based deployment
If TBMQ is installed in a K8S environment, you can edit the scripts and add environment variables for the corresponding deployments/stateful sets. For more details, refer to the K8S documentation.
Configuration parameters
The configuration file is written in YAML format. All configuration parameters have corresponding environment variable names and default values. To change a configuration parameter, simply modify its default value. For example:
1
2
server:
address: "${HTTP_BIND_ADDRESS:0.0.0.0}"
In this case, ‘HTTP_BIND_ADDRESS’ is the environment variable name and ‘0.0.0.0’ is the default value.
You can use the simple example below to add a new environment variable ‘HTTP_BIND_PORT’ with value ‘8084’.
1
2
...
export HTTP_BIND_PORT=8084
The parameters are grouped by system components. The list contains the name (address in thingsboard-mqtt-broker.yml file), environment variable, default value, and description.
HTTP server parameters
Parameter | Environment Variable | Default Value | Description |
server.shutdown | SERVER_SHUTDOWN | graceful | Shutdown type (graceful or immediate) |
server.address | HTTP_BIND_ADDRESS | 0.0.0.0 | HTTP Server bind address (has no effect if web-environment is disabled) |
server.port | HTTP_BIND_PORT | 8083 | HTTP Server bind port (has no effect if web-environment is disabled) |
server.log_controller_error_stack_trace | HTTP_LOG_CONTROLLER_ERROR_STACK_TRACE | false | Log errors with stacktrace when REST API throws exception |
server.ssl.enabled | SSL_ENABLED | false | Enable/disable SSL support |
server.ssl.credentials.type | SSL_CREDENTIALS_TYPE | PEM | Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore) |
server.ssl.credentials.pem.cert_file | SSL_PEM_CERT | server.pem | Path to the server certificate file (holds server certificate or certificate chain, may include server private key) |
server.ssl.credentials.pem.key_file | SSL_PEM_KEY | server_key.pem | Path to the server certificate private key file. Optional by default. Required if the private key is not present in server certificate file |
server.ssl.credentials.pem.key_password | SSL_PEM_KEY_PASSWORD | server_key_password | Server certificate private key password (optional) |
server.ssl.credentials.keystore.type | SSL_KEY_STORE_TYPE | PKCS12 | Type of the key store (JKS or PKCS12) |
server.ssl.credentials.keystore.store_file | SSL_KEY_STORE | classpath:keystore/keystore.p12 | Path to the key store that holds the SSL certificate |
server.ssl.credentials.keystore.store_password | SSL_KEY_STORE_PASSWORD | thingsboard_mqtt_broker | Password used to access the key store |
server.ssl.credentials.keystore.key_alias | SSL_KEY_ALIAS | tomcat | Key alias |
server.ssl.credentials.keystore.key_password | SSL_KEY_PASSWORD | thingsboard_mqtt_broker | Password used to access the key |
MQTT listeners parameters
Parameter | Environment Variable | Default Value | Description |
listener.tcp.enabled | LISTENER_TCP_ENABLED | true | Enable/disable MQTT TCP port listener |
listener.tcp.bind_address | LISTENER_TCP_BIND_ADDRESS | 0.0.0.0 | MQTT TCP listener bind address |
listener.tcp.bind_port | LISTENER_TCP_BIND_PORT | 1883 | MQTT TCP listener bind port |
listener.tcp.netty.leak_detector_level | TCP_NETTY_LEAK_DETECTOR_LVL | DISABLED | Netty leak detector level: DISABLED, SIMPLE, ADVANCED, PARANOID |
listener.tcp.netty.boss_group_thread_count | TCP_NETTY_BOSS_GROUP_THREADS | 1 | Netty boss group threads count |
listener.tcp.netty.worker_group_thread_count | TCP_NETTY_WORKER_GROUP_THREADS | 12 | Netty worker group threads count |
listener.tcp.netty.max_payload_size | TCP_NETTY_MAX_PAYLOAD_SIZE | 65536 | Max payload size in bytes |
listener.tcp.netty.so_keep_alive | TCP_NETTY_SO_KEEPALIVE | true | Enable/disable keep-alive mechanism to periodically probe the other end of a connection |
listener.tcp.netty.shutdown_quiet_period | TCP_NETTY_SHUTDOWN_QUIET_PERIOD | 0 | Period in seconds in graceful shutdown during which no new tasks are submitted |
listener.tcp.netty.shutdown_timeout | TCP_NETTY_SHUTDOWN_TIMEOUT | 5 | The max time in seconds to wait until the executor is stopped |
listener.ssl.enabled | LISTENER_SSL_ENABLED | false | Enable/disable MQTT SSL port listener |
listener.ssl.bind_address | LISTENER_SSL_BIND_ADDRESS | 0.0.0.0 | MQTT SSL listener bind address |
listener.ssl.bind_port | LISTENER_SSL_BIND_PORT | 8883 | MQTT SSL listener bind port |
listener.ssl.config.protocol | LISTENER_SSL_PROTOCOL | TLSv1.2 | SSL protocol: see this link |
listener.ssl.config.enabled_cipher_suites | LISTENER_SSL_ENABLED_CIPHER_SUITES | Sets the cipher suites enabled for use on mqtts listener. The value is a comma-separated list of cipher suits (e.g. TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256). Defaults to empty list meaning all supported cipher suites of the used provider are taken | |
listener.ssl.config.credentials.type | LISTENER_SSL_CREDENTIALS_TYPE | PEM | Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore) |
listener.ssl.config.credentials.pem.cert_file | LISTENER_SSL_PEM_CERT | mqttserver.pem | Path to the server certificate file (holds server certificate or certificate chain, may include server private key) |
listener.ssl.config.credentials.pem.key_file | LISTENER_SSL_PEM_KEY | mqttserver_key.pem | Path to the server certificate private key file. Optional by default. Required if the private key is not present in server certificate file |
listener.ssl.config.credentials.pem.key_password | LISTENER_SSL_PEM_KEY_PASSWORD | server_key_password | Server certificate private key password (optional) |
listener.ssl.config.credentials.keystore.type | LISTENER_SSL_KEY_STORE_TYPE | JKS | Type of the key store (JKS or PKCS12) |
listener.ssl.config.credentials.keystore.store_file | LISTENER_SSL_KEY_STORE | mqttserver.jks | Path to the key store that holds the SSL certificate |
listener.ssl.config.credentials.keystore.store_password | LISTENER_SSL_KEY_STORE_PASSWORD | server_ks_password | Password used to access the key store |
listener.ssl.config.credentials.keystore.key_alias | 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.config.credentials.keystore.key_password | LISTENER_SSL_KEY_PASSWORD | server_key_password | Optional password to access the private key. If not set, the platform will attempt to load the private keys that are not protected with the password |
listener.ssl.netty.leak_detector_level | SSL_NETTY_LEAK_DETECTOR_LVL | DISABLED | Netty leak detector level: DISABLED, SIMPLE, ADVANCED, PARANOID |
listener.ssl.netty.boss_group_thread_count | SSL_NETTY_BOSS_GROUP_THREADS | 1 | Netty boss group threads count |
listener.ssl.netty.worker_group_thread_count | SSL_NETTY_WORKER_GROUP_THREADS | 12 | Netty worker group threads count |
listener.ssl.netty.max_payload_size | SSL_NETTY_MAX_PAYLOAD_SIZE | 65536 | Max payload size in bytes |
listener.ssl.netty.so_keep_alive | SSL_NETTY_SO_KEEPALIVE | true | Enable/disable keep-alive mechanism to periodically probe the other end of a connection |
listener.ssl.netty.shutdown_quiet_period | SSL_NETTY_SHUTDOWN_QUIET_PERIOD | 0 | Period in seconds in graceful shutdown during which no new tasks are submitted |
listener.ssl.netty.shutdown_timeout | SSL_NETTY_SHUTDOWN_TIMEOUT | 5 | The max time in seconds to wait until the executor is stopped |
listener.ws.enabled | LISTENER_WS_ENABLED | true | Enable/disable MQTT WS port listener |
listener.ws.bind_address | LISTENER_WS_BIND_ADDRESS | 0.0.0.0 | MQTT WS listener bind address |
listener.ws.bind_port | LISTENER_WS_BIND_PORT | 8084 | MQTT WS listener bind port |
listener.ws.netty.sub_protocols | WS_NETTY_SUB_PROTOCOLS | 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 |
listener.ws.netty.leak_detector_level | WS_NETTY_LEAK_DETECTOR_LVL | DISABLED | Netty leak detector level: DISABLED, SIMPLE, ADVANCED, PARANOID |
listener.ws.netty.boss_group_thread_count | WS_NETTY_BOSS_GROUP_THREADS | 1 | Netty boss group threads count |
listener.ws.netty.worker_group_thread_count | WS_NETTY_WORKER_GROUP_THREADS | 12 | Netty worker group threads count |
listener.ws.netty.max_payload_size | WS_NETTY_MAX_PAYLOAD_SIZE | 65536 | Max payload size in bytes |
listener.ws.netty.so_keep_alive | WS_NETTY_SO_KEEPALIVE | true | Enable/disable keep-alive mechanism to periodically probe the other end of a connection |
listener.ws.netty.shutdown_quiet_period | WS_NETTY_SHUTDOWN_QUIET_PERIOD | 0 | Period in seconds in graceful shutdown during which no new tasks are submitted |
listener.ws.netty.shutdown_timeout | WS_NETTY_SHUTDOWN_TIMEOUT | 5 | The max time in seconds to wait until the executor is stopped |
listener.wss.enabled | LISTENER_WSS_ENABLED | false | Enable/disable MQTT WSS port listener |
listener.wss.bind_address | LISTENER_WSS_BIND_ADDRESS | 0.0.0.0 | MQTT WSS listener bind address |
listener.wss.bind_port | LISTENER_WSS_BIND_PORT | 8085 | MQTT WSS listener bind port |
listener.wss.config.protocol | LISTENER_WSS_PROTOCOL | TLSv1.2 | SSL protocol: see this link |
listener.wss.config.enabled_cipher_suites | LISTENER_WSS_ENABLED_CIPHER_SUITES | Sets the cipher suites enabled for use on wss listener. The value is a comma-separated list of cipher suits (e.g. TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256). Defaults to empty list meaning all supported cipher suites of the used provider are taken | |
listener.wss.config.credentials.type | LISTENER_WSS_CREDENTIALS_TYPE | PEM | Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore) |
listener.wss.config.credentials.pem.cert_file | LISTENER_WSS_PEM_CERT | ws_mqtt_server.pem | Path to the server certificate file (holds server certificate or certificate chain, may include server private key) |
listener.wss.config.credentials.pem.key_file | LISTENER_WSS_PEM_KEY | 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 server certificate file |
listener.wss.config.credentials.pem.key_password | LISTENER_WSS_PEM_KEY_PASSWORD | ws_server_key_password | Server certificate private key password (optional) |
listener.wss.config.credentials.keystore.type | LISTENER_WSS_KEY_STORE_TYPE | JKS | Type of the key store (JKS or PKCS12) |
listener.wss.config.credentials.keystore.store_file | LISTENER_WSS_KEY_STORE | ws_mqtt_server.jks | Path to the key store that holds the SSL certificate |
listener.wss.config.credentials.keystore.store_password | LISTENER_WSS_KEY_STORE_PASSWORD | ws_server_ks_password | Password used to access the key store |
listener.wss.config.credentials.keystore.key_alias | 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.config.credentials.keystore.key_password | LISTENER_WSS_KEY_PASSWORD | ws_server_key_password | Optional password to access the private key. If not set, the platform will attempt to load the private keys that are not protected with the password |
listener.wss.netty.sub_protocols | WSS_NETTY_SUB_PROTOCOLS | 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 |
listener.wss.netty.leak_detector_level | WSS_NETTY_LEAK_DETECTOR_LVL | DISABLED | Netty leak detector level: DISABLED, SIMPLE, ADVANCED, PARANOID |
listener.wss.netty.boss_group_thread_count | WSS_NETTY_BOSS_GROUP_THREADS | 1 | Netty boss group threads count |
listener.wss.netty.worker_group_thread_count | WSS_NETTY_WORKER_GROUP_THREADS | 12 | Netty worker group threads count |
listener.wss.netty.max_payload_size | WSS_NETTY_MAX_PAYLOAD_SIZE | 65536 | Max payload size in bytes |
listener.wss.netty.so_keep_alive | WSS_NETTY_SO_KEEPALIVE | true | Enable/disable keep-alive mechanism to periodically probe the other end of a connection |
listener.wss.netty.shutdown_quiet_period | WSS_NETTY_SHUTDOWN_QUIET_PERIOD | 0 | Period in seconds in graceful shutdown during which no new tasks are submitted |
listener.wss.netty.shutdown_timeout | WSS_NETTY_SHUTDOWN_TIMEOUT | 5 | The max time in seconds to wait until the executor is stopped |
Kafka parameters
Parameter | Environment Variable | Default Value | Description |
queue.msg-all.consumers-count | TB_MSG_ALL_CONSUMERS_COUNT | 4 | Number of parallel consumers for 'tbmq.msg.all' topic. Should not be more than the number of partitions in topic |
queue.msg-all.threads-count | TB_MSG_ALL_THREADS_COUNT | 4 | Number of threads in the pool to process consumers tasks. Should not be less than number of consumers |
queue.msg-all.poll-interval | TB_MSG_ALL_POLL_INTERVAL | 100 | Interval in milliseconds to poll messages from 'tbmq.msg.all' topic |
queue.msg-all.pack-processing-timeout | TB_MSG_ALL_PACK_PROCESSING_TIMEOUT | 20000 | Timeout in milliseconds for processing the pack of messages from 'tbmq.msg.all' topic |
queue.msg-all.ack-strategy.type | TB_MSG_ALL_ACK_STRATEGY_TYPE | SKIP_ALL | Processing strategy for 'tbmq.msg.all' topic. Can be: SKIP_ALL, RETRY_ALL |
queue.msg-all.ack-strategy.retries | TB_MSG_ALL_ACK_STRATEGY_RETRIES | 1 | Number of retries, 0 is unlimited. Use for RETRY_ALL processing strategy |
queue.msg-all.msg-parallel-processing | TB_MSG_ALL_PARALLEL_PROCESSING | false | Enable/disable processing of consumed messages in parallel (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 count the impact of this parameter before setting it on production |
queue.application-persisted-msg.poll-interval | TB_APP_PERSISTED_MSG_POLL_INTERVAL | 100 | Interval in milliseconds to poll messages from Application topics |
queue.application-persisted-msg.pack-processing-timeout | TB_APP_PERSISTED_MSG_PACK_PROCESSING_TIMEOUT | 20000 | Timeout in milliseconds for processing the pack of messages |
queue.application-persisted-msg.ack-strategy.type | TB_APP_PERSISTED_MSG_ACK_STRATEGY_TYPE | RETRY_ALL | Processing strategy for Application topics. Can be: SKIP_ALL, RETRY_ALL |
queue.application-persisted-msg.ack-strategy.retries | TB_APP_PERSISTED_MSG_ACK_STRATEGY_RETRIES | 3 | Number of retries, 0 is unlimited. Use for RETRY_ALL processing strategy |
queue.application-persisted-msg.client-id-validation | TB_APP_PERSISTED_MSG_CLIENT_ID_VALIDATION | true | Enable/disable check that application client id contains only alphanumeric chars for Kafka topic creation |
queue.application-persisted-msg.shared-topic-validation | TB_APP_PERSISTED_MSG_SHARED_TOPIC_VALIDATION | true | Enable/disable check that application shared subscription topic filter contains only alphanumeric chars or '+' or '#' for Kafka topic creation |
queue.device-persisted-msg.consumers-count | TB_DEVICE_PERSISTED_MSG_CONSUMERS_COUNT | 3 | Number of parallel consumers for 'tbmq.msg.persisted' topic. Should not be more than the number of partitions in topic |
queue.device-persisted-msg.threads-count | TB_DEVICE_PERSISTED_MSG_THREADS_COUNT | 3 | Number of threads in the pool to process consumers tasks |
queue.device-persisted-msg.poll-interval | TB_DEVICE_PERSISTED_MSG_POLL_INTERVAL | 100 | Interval in milliseconds to poll messages from 'tbmq.msg.persisted' topic |
queue.device-persisted-msg.pack-processing-timeout | TB_DEVICE_PERSISTED_MSG_PACK_PROCESSING_TIMEOUT | 20000 | Timeout in milliseconds for processing the pack of messages from 'tbmq.msg.persisted' topic |
queue.device-persisted-msg.ack-strategy.type | TB_DEVICE_PERSISTED_MSG_ACK_STRATEGY_TYPE | RETRY_ALL | Queue processing strategy. Can be: SKIP_ALL, RETRY_ALL |
queue.device-persisted-msg.ack-strategy.retries | TB_DEVICE_PERSISTED_MSG_ACK_STRATEGY_RETRIES | 3 | Number of retries, 0 is unlimited. Use for RETRY_ALL processing strategy |
queue.device-persisted-msg.ack-strategy.pause-between-retries | TB_DEVICE_PERSISTED_MSG_ACK_STRATEGY_PAUSE_BETWEEN_RETRIES | 1 | Time in seconds to wait in consumer thread before retries |
queue.retained-msg.poll-interval | TB_RETAINED_MSG_POLL_INTERVAL | 100 | Interval in milliseconds to poll messages from 'tbmq.msg.retained' topic |
queue.retained-msg.acknowledge-wait-timeout-ms | TB_RETAINED_MSG_ACK_WAIT_TIMEOUT_MS | 500 | Interval in milliseconds to wait for system messages to be delivered to 'tbmq.msg.retained' topic |
queue.client-session.poll-interval | TB_CLIENT_SESSION_POLL_INTERVAL | 100 | Interval in milliseconds to poll messages from 'tbmq.client.session' topic |
queue.client-session.acknowledge-wait-timeout-ms | TB_CLIENT_SESSION_ACK_WAIT_TIMEOUT_MS | 500 | Interval in milliseconds to wait for system messages to be delivered to 'tbmq.client.session' topic |
queue.client-subscriptions.poll-interval | TB_CLIENT_SUBSCRIPTIONS_POLL_INTERVAL | 100 | Interval in milliseconds to poll messages from 'tbmq.client.subscriptions' topic |
queue.client-subscriptions.acknowledge-wait-timeout-ms | TB_CLIENT_SUBSCRIPTIONS_ACK_WAIT_TIMEOUT_MS | 500 | Interval in milliseconds to wait for system messages to be delivered to 'tbmq.client.subscriptions' topic |
queue.client-session-event.consumers-count | TB_CLIENT_SESSION_EVENT_CONSUMERS_COUNT | 2 | Number of parallel consumers for `tbmq.client.session.event.request` topic |
queue.client-session-event.max-pending-requests | TB_CLIENT_SESSION_EVENT_MAX_PENDING_REQUESTS | 10000 | Number of pending client session events |
queue.client-session-event.poll-interval | TB_CLIENT_SESSION_EVENT_POLL_INTERVAL | 100 | Interval in milliseconds to poll messages from 'tbmq.client.session.event.request' topic |
queue.client-session-event.batch-wait-timeout-ms | TB_CLIENT_SESSION_EVENT_BATCH_WAIT_MS | 2000 | Max interval in milliseconds to process 'tbmq.client.session.event.request' messages after consuming them |
queue.client-session-event-response.response-sender-threads | TB_CLIENT_SESSION_EVENT_RESPONSE_SENDER_THREADS | 8 | Number of threads for sending event responses to session event requests |
queue.client-session-event-response.poll-interval | TB_CLIENT_SESSION_EVENT_RESPONSE_POLL_INTERVAL | 100 | Interval in milliseconds to poll messages from 'tbmq.client.session.event.response' topics |
queue.client-session-event-response.max-request-timeout | TB_CLIENT_SESSION_EVENT_RESPONSE_MAX_REQUEST_TIMEOUT | 100000 | Max time in milliseconds for client session events before they are expired |
queue.client-session-event-response.cleanup-interval | TB_CLIENT_SESSION_EVENT_RESPONSE_CLEANUP_INTERVAL | 100 | Period in milliseconds to clean-up stale client session events |
queue.disconnect-client-command.poll-interval | TB_DISCONNECT_CLIENT_COMMAND_POLL_INTERVAL | 100 | Interval in milliseconds to poll messages from 'tbmq.client.disconnect' topics |
queue.persisted-downlink-msg.consumers-count | TB_PERSISTED_DOWNLINK_MSG_CONSUMERS_COUNT | 2 | Number of parallel consumers for `tbmq.msg.downlink.persisted` topics |
queue.persisted-downlink-msg.threads-count | TB_PERSISTED_DOWNLINK_MSG_THREADS_COUNT | 2 | Number of threads in the pool to process consumers tasks |
queue.persisted-downlink-msg.poll-interval | TB_PERSISTED_DOWNLINK_MSG_POLL_INTERVAL | 100 | Interval in milliseconds to poll messages from 'tbmq.msg.downlink.persisted' topics |
queue.basic-downlink-msg.consumers-count | TB_BASIC_DOWNLINK_MSG_CONSUMERS_COUNT | 2 | Number of parallel consumers for `tbmq.msg.downlink.basic` topics |
queue.basic-downlink-msg.threads-count | TB_BASIC_DOWNLINK_MSG_THREADS_COUNT | 2 | Number of threads in the pool to process consumers tasks |
queue.basic-downlink-msg.poll-interval | TB_BASIC_DOWNLINK_MSG_POLL_INTERVAL | 100 | Interval in milliseconds to poll messages from 'tbmq.msg.downlink.basic' topics |
queue.application-removed-event.poll-interval | TB_APPLICATION_REMOVED_EVENT_POLL_INTERVAL | 100 | Interval in milliseconds to poll messages from 'tbmq.sys.app.removed' topic |
queue.application-removed-event.processing.cron | TB_APPLICATION_REMOVED_EVENT_PROCESSING_CRON | 0 0 3 * * * | Cron expression to when execute the consuming and processing of messages |
queue.application-removed-event.processing.zone | TB_APPLICATION_REMOVED_EVENT_PROCESSING_ZONE | UTC | Timezone for the processing cron-job |
queue.historical-data-total.poll-interval | TB_HISTORICAL_DATA_TOTAL_POLL_INTERVAL | 100 | Interval in milliseconds to poll messages from 'tbmq.sys.historical.data' topic |
queue.kafka.bootstrap.servers | TB_KAFKA_SERVERS | localhost:9092 | List of kafka bootstrap servers used to establish connection |
queue.kafka.enable-topic-deletion | TB_KAFKA_ENABLE_TOPIC_DELETION | true | Enable/disable deletion of topics for Application MQTT Clients |
queue.kafka.default.consumer.partition-assignment-strategy | TB_KAFKA_DEFAULT_CONSUMER_PARTITION_ASSIGNMENT_STRATEGY | org.apache.kafka.clients.consumer.StickyAssignor | A list of class names or class types, ordered by preference, of supported partition assignment strategies that the client will use to distribute partition ownership amongst consumer instances when group management is used |
queue.kafka.default.consumer.session-timeout-ms | TB_KAFKA_DEFAULT_CONSUMER_SESSION_TIMEOUT_MS | 300000 | The timeout in milliseconds used to detect client failures when using Kafka's group management facility |
queue.kafka.default.consumer.max-poll-interval-ms | TB_KAFKA_DEFAULT_CONSUMER_MAX_POLL_INTERVAL_MS | 300000 | The maximum delay in milliseconds between invocations of poll() when using consumer group management |
queue.kafka.default.consumer.max-poll-records | TB_KAFKA_DEFAULT_CONSUMER_MAX_POLL_RECORDS | 2000 | The maximum number of records returned in a single call to poll() |
queue.kafka.default.consumer.max-partition-fetch-bytes | TB_KAFKA_DEFAULT_CONSUMER_MAX_PARTITION_FETCH_BYTES | 16777216 | The maximum amount of data in bytes per-partition the server will return |
queue.kafka.default.consumer.fetch-max-bytes | TB_KAFKA_DEFAULT_CONSUMER_FETCH_MAX_BYTES | 134217728 | The maximum amount of data in bytes the server should return for a fetch request |
queue.kafka.default.producer.acks | TB_KAFKA_DEFAULT_PRODUCER_ACKS | 1 | The number of acknowledgments the producer requires the leader to have received before considering a request complete |
queue.kafka.default.producer.retries | TB_KAFKA_DEFAULT_PRODUCER_RETRIES | 1 | Setting a value greater than zero will cause the client to resend any record whose send fails with a potentially transient error |
queue.kafka.default.producer.batch-size | TB_KAFKA_DEFAULT_PRODUCER_BATCH_SIZE | 16384 | The producer will attempt to batch records together into fewer requests whenever multiple records are being sent to the same partition. Size in bytes |
queue.kafka.default.producer.linger-ms | TB_KAFKA_DEFAULT_PRODUCER_LINGER_MS | 5 | The producer groups together any records that arrive in between request transmissions into a single batched request, set in milliseconds |
queue.kafka.default.producer.buffer-memory | TB_KAFKA_DEFAULT_PRODUCER_BUFFER_MEMORY | 33554432 | The total bytes of memory the producer can use to buffer records waiting to be sent to the server |
queue.kafka.default.producer.compression-type | TB_KAFKA_DEFAULT_COMPRESSION_TYPE | none | The compression type for all data generated by the producer. Valid values are `none`, `gzip`, `snappy`, `lz4`, or `zstd` |
queue.kafka.admin.config | TB_KAFKA_ADMIN_CONFIG | retries:1 | List of configs separated by semicolon used for admin kafka client creation |
queue.kafka.consumer-stats.enabled | TB_KAFKA_CONSUMER_STATS_ENABLED | true | Prints lag if enabled between consumer group offset and last messages offset in Kafka topics |
queue.kafka.consumer-stats.print-interval-ms | TB_KAFKA_CONSUMER_STATS_PRINT_INTERVAL_MS | 60000 | Statistics printing interval in milliseconds for Kafka's consumer-groups stats |
queue.kafka.consumer-stats.kafka-response-timeout-ms | TB_KAFKA_CONSUMER_STATS_RESPONSE_TIMEOUT_MS | 1000 | Time to wait in milliseconds for the stats-loading requests to Kafka to finish |
queue.kafka.consumer-stats.consumer-config | TB_KAFKA_CONSUMER_STATS_CONSUMER_CONFIG | List of configs separated by semicolon used for kafka stats consumer | |
queue.kafka.home-page.consumer-config | TB_KAFKA_HOME_PAGE_CONSUMER_CONFIG | List of configs separated by semicolon used for kafka admin client for home page | |
queue.kafka.home-page.kafka-response-timeout-ms | TB_KAFKA_HOME_PAGE_RESPONSE_TIMEOUT_MS | 1000 | Time to wait in milliseconds for the home page requests to Kafka to finish |
queue.kafka.msg-all.topic | TB_KAFKA_MSG_ALL_TOPIC | tbmq.msg.all | Topic for persisting incoming PUBLISH messages |
queue.kafka.msg-all.topic-properties | TB_KAFKA_MSG_ALL_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:26214400;retention.bytes:2147483648;partitions:24;replication.factor:1 | Kafka topic properties separated by semicolon for `tbmq.msg.all` topic |
queue.kafka.msg-all.additional-consumer-config | TB_KAFKA_MSG_ALL_ADDITIONAL_CONSUMER_CONFIG | Additional Kafka consumer configs separated by semicolon for `tbmq.msg.all` topic | |
queue.kafka.msg-all.additional-producer-config | TB_KAFKA_MSG_ALL_ADDITIONAL_PRODUCER_CONFIG | Additional Kafka producer configs separated by semicolon for `tbmq.msg.all` topic | |
queue.kafka.application-persisted-msg.topic-properties | TB_KAFKA_APP_PERSISTED_MSG_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;replication.factor:1 | Kafka topic properties separated by semicolon for `tbmq.msg.app` topics |
queue.kafka.application-persisted-msg.additional-consumer-config | TB_KAFKA_APP_PERSISTED_MSG_ADDITIONAL_CONSUMER_CONFIG | max.poll.records:500 | Additional Kafka consumer configs separated by semicolon for `tbmq.msg.app` topics |
queue.kafka.application-persisted-msg.additional-producer-config | TB_KAFKA_APP_PERSISTED_MSG_ADDITIONAL_PRODUCER_CONFIG | Additional Kafka producer configs separated by semicolon for `tbmq.msg.app` topics | |
queue.kafka.application-persisted-msg.shared-topic.topic-properties | TB_KAFKA_APP_PERSISTED_MSG_SHARED_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;replication.factor:1 | Kafka topic properties separated by semicolon for application shared subscription topics |
queue.kafka.application-persisted-msg.shared-topic.additional-consumer-config | TB_KAFKA_APP_PERSISTED_MSG_SHARED_ADDITIONAL_CONSUMER_CONFIG | max.poll.records:500 | Additional Kafka consumer configs separated by semicolon for application shared subscription topics |
queue.kafka.application-persisted-msg.shared-topic.additional-producer-config | TB_KAFKA_APP_PERSISTED_MSG_SHARED_ADDITIONAL_PRODUCER_CONFIG | Additional Kafka producer configs separated by semicolon for application shared subscription topics | |
queue.kafka.device-persisted-msg.topic | TB_KAFKA_DEVICE_PERSISTED_MSG_TOPIC | tbmq.msg.persisted | Topic for persisting messages related to Device clients before saving them in Database |
queue.kafka.device-persisted-msg.topic-properties | TB_KAFKA_DEVICE_PERSISTED_MSG_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:12;replication.factor:1 | Kafka topic properties separated by semicolon for `tbmq.msg.persisted` topic |
queue.kafka.device-persisted-msg.additional-consumer-config | TB_KAFKA_DEVICE_PERSISTED_MSG_ADDITIONAL_CONSUMER_CONFIG | Additional Kafka consumer configs separated by semicolon for `tbmq.msg.persisted` topic | |
queue.kafka.device-persisted-msg.additional-producer-config | TB_KAFKA_DEVICE_PERSISTED_MSG_ADDITIONAL_PRODUCER_CONFIG | Additional Kafka producer configs separated by semicolon for `tbmq.msg.persisted` topic | |
queue.kafka.retained-msg.topic | TB_KAFKA_RETAINED_MSG_TOPIC | tbmq.msg.retained | Topic for retained messages |
queue.kafka.retained-msg.topic-properties | TB_KAFKA_RETAINED_MSG_TOPIC_PROPERTIES | segment.bytes:26214400;partitions:1;replication.factor:1 | Kafka topic properties separated by semicolon for `tbmq.msg.retained` topic |
queue.kafka.retained-msg.additional-consumer-config | TB_KAFKA_RETAINED_MSG_ADDITIONAL_CONSUMER_CONFIG | Additional Kafka consumer configs separated by semicolon for `tbmq.msg.retained` topic | |
queue.kafka.retained-msg.additional-producer-config | TB_KAFKA_RETAINED_MSG_ADDITIONAL_PRODUCER_CONFIG | retries:3 | Additional Kafka producer configs separated by semicolon for `tbmq.msg.retained` topic |
queue.kafka.client-session.topic | TB_KAFKA_CLIENT_SESSION_TOPIC | tbmq.client.session | Topic for persisting client sessions |
queue.kafka.client-session.topic-properties | TB_KAFKA_CLIENT_SESSION_TOPIC_PROPERTIES | segment.bytes:26214400;partitions:1;replication.factor:1 | Kafka topic properties separated by semicolon for `tbmq.client.session` topic |
queue.kafka.client-session.additional-consumer-config | TB_KAFKA_CLIENT_SESSION_ADDITIONAL_CONSUMER_CONFIG | Additional Kafka consumer configs separated by semicolon for `tbmq.client.session` topic | |
queue.kafka.client-session.additional-producer-config | TB_KAFKA_CLIENT_SESSION_ADDITIONAL_PRODUCER_CONFIG | retries:3 | Additional Kafka producer configs separated by semicolon for `tbmq.client.session` topic |
queue.kafka.client-subscriptions.topic | TB_KAFKA_CLIENT_SUBSCRIPTIONS_TOPIC | tbmq.client.subscriptions | Topic for persisting client subscriptions |
queue.kafka.client-subscriptions.topic-properties | TB_KAFKA_CLIENT_SUBSCRIPTIONS_TOPIC_PROPERTIES | segment.bytes:26214400;partitions:1;replication.factor:1 | Kafka topic properties separated by semicolon for `tbmq.client.subscriptions` topic |
queue.kafka.client-subscriptions.additional-consumer-config | TB_KAFKA_CLIENT_SUBSCRIPTIONS_ADDITIONAL_CONSUMER_CONFIG | Additional Kafka consumer configs separated by semicolon for `tbmq.client.subscriptions` topic | |
queue.kafka.client-subscriptions.additional-producer-config | TB_KAFKA_CLIENT_SUBSCRIPTIONS_ADDITIONAL_PRODUCER_CONFIG | retries:3 | Additional Kafka producer configs separated by semicolon for `tbmq.client.subscriptions` topic |
queue.kafka.client-session-event.topic | TB_KAFKA_CLIENT_SESSION_EVENT_TOPIC | tbmq.client.session.event.request | Topic for sending client session event requests |
queue.kafka.client-session-event.topic-properties | TB_KAFKA_CLIENT_SESSION_EVENT_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:48;replication.factor:1 | Kafka topic properties separated by semicolon for `tbmq.client.session.event.request` topic |
queue.kafka.client-session-event.additional-consumer-config | TB_KAFKA_CLIENT_SESSION_EVENT_ADDITIONAL_CONSUMER_CONFIG | max.poll.records:1000 | Additional Kafka consumer configs separated by semicolon for ``tbmq.client.session.event.request`` topic |
queue.kafka.client-session-event.additional-producer-config | TB_KAFKA_CLIENT_SESSION_EVENT_ADDITIONAL_PRODUCER_CONFIG | Additional Kafka producer configs separated by semicolon for ``tbmq.client.session.event.request`` topic | |
queue.kafka.client-session-event-response.topic-prefix | TB_KAFKA_CLIENT_SESSION_EVENT_RESPONSE_TOPIC_PREFIX | tbmq.client.session.event.response | Prefix for topics for sending client session event responses to Broker nodes |
queue.kafka.client-session-event-response.topic-properties | TB_KAFKA_CLIENT_SESSION_EVENT_RESPONSE_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;replication.factor:1 | Kafka topic properties separated by semicolon for `tbmq.client.session.event.response` topics |
queue.kafka.client-session-event-response.additional-consumer-config | TB_KAFKA_CLIENT_SESSION_EVENT_RESPONSE_ADDITIONAL_CONSUMER_CONFIG | Additional Kafka consumer configs separated by semicolon for `tbmq.client.session.event.response` topics | |
queue.kafka.client-session-event-response.additional-producer-config | TB_KAFKA_CLIENT_SESSION_EVENT_RESPONSE_ADDITIONAL_PRODUCER_CONFIG | Additional Kafka producer configs separated by semicolon for `tbmq.client.session.event.response` topics | |
queue.kafka.disconnect-client-command.topic-prefix | TB_KAFKA_DISCONNECT_CLIENT_COMMAND_TOPIC_PREFIX | tbmq.client.disconnect | Prefix for topics for sending disconnect client commands to Broker nodes |
queue.kafka.disconnect-client-command.topic-properties | TB_KAFKA_DISCONNECT_CLIENT_COMMAND_RESPONSE_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;replication.factor:1 | Kafka topic properties separated by semicolon for `tbmq.client.disconnect` topics |
queue.kafka.disconnect-client-command.additional-consumer-config | TB_KAFKA_DISCONNECT_CLIENT_COMMAND_ADDITIONAL_CONSUMER_CONFIG | Additional Kafka consumer configs separated by semicolon for `tbmq.client.disconnect` topics | |
queue.kafka.disconnect-client-command.additional-producer-config | TB_KAFKA_DISCONNECT_CLIENT_COMMAND_ADDITIONAL_PRODUCER_CONFIG | Additional Kafka producer configs separated by semicolon for `tbmq.client.disconnect` topics | |
queue.kafka.basic-downlink-msg.topic-prefix | TB_KAFKA_BASIC_DOWNLINK_MSG_TOPIC_PREFIX | tbmq.msg.downlink.basic | Prefix for topics for non-persistent Device messages that should be transferred to other Broker nodes |
queue.kafka.basic-downlink-msg.topic-properties | TB_KAFKA_BASIC_DOWNLINK_MSG_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:12;replication.factor:1 | Kafka topic properties separated by semicolon for `tbmq.msg.downlink.basic` topics |
queue.kafka.basic-downlink-msg.additional-consumer-config | TB_KAFKA_BASIC_DOWNLINK_MSG_ADDITIONAL_CONSUMER_CONFIG | Additional Kafka consumer configs separated by semicolon for `tbmq.msg.downlink.basic` topics | |
queue.kafka.basic-downlink-msg.additional-producer-config | TB_KAFKA_BASIC_DOWNLINK_MSG_ADDITIONAL_PRODUCER_CONFIG | batch.size:32768 | Additional Kafka producer configs separated by semicolon for `tbmq.msg.downlink.basic` topics |
queue.kafka.persisted-downlink-msg.topic-prefix | TB_KAFKA_PERSISTED_DOWNLINK_MSG_TOPIC_PREFIX | tbmq.msg.downlink.persisted | Prefix for topics for persistent Device messages that should be transferred to other Broker nodes |
queue.kafka.persisted-downlink-msg.topic-properties | TB_KAFKA_PERSISTED_DOWNLINK_MSG_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:12;replication.factor:1 | Kafka topic properties separated by semicolon for `tbmq.msg.downlink.persisted` topics |
queue.kafka.persisted-downlink-msg.additional-consumer-config | TB_KAFKA_PERSISTED_DOWNLINK_MSG_ADDITIONAL_CONSUMER_CONFIG | Additional Kafka consumer configs separated by semicolon for `tbmq.msg.downlink.persisted` topics | |
queue.kafka.persisted-downlink-msg.additional-producer-config | TB_KAFKA_PERSISTED_DOWNLINK_MSG_ADDITIONAL_PRODUCER_CONFIG | Additional Kafka producer configs separated by semicolon for `tbmq.msg.downlink.persisted` topics | |
queue.kafka.application-removed-event.topic | TB_KAFKA_APPLICATION_REMOVED_EVENT_TOPIC | tbmq.sys.app.removed | Topic for sending events to remove application topics when application clients are changed to be device clients |
queue.kafka.application-removed-event.topic-properties | TB_KAFKA_APPLICATION_REMOVED_EVENT_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;replication.factor:1 | Kafka topic properties separated by semicolon for `tbmq.sys.app.removed` topic |
queue.kafka.application-removed-event.additional-consumer-config | TB_KAFKA_APPLICATION_REMOVED_EVENT_ADDITIONAL_CONSUMER_CONFIG | Additional Kafka consumer configs separated by semicolon for `tbmq.sys.app.removed` topic | |
queue.kafka.application-removed-event.additional-producer-config | TB_KAFKA_APPLICATION_REMOVED_EVENT_ADDITIONAL_PRODUCER_CONFIG | Additional Kafka producer configs separated by semicolon for `tbmq.sys.app.removed` topic | |
queue.kafka.historical-data-total.topic | TB_KAFKA_HISTORICAL_DATA_TOTAL_TOPIC | tbmq.sys.historical.data | Topic for sending historical data stats to be summed from each broker |
queue.kafka.historical-data-total.topic-properties | TB_KAFKA_HISTORICAL_DATA_TOTAL_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;replication.factor:1 | Kafka topic properties separated by semicolon for `tbmq.sys.historical.data` topic |
queue.kafka.historical-data-total.additional-consumer-config | TB_KAFKA_HISTORICAL_DATA_TOTAL_ADDITIONAL_CONSUMER_CONFIG | Additional Kafka consumer configs separated by semicolon for `tbmq.sys.historical.data` topic | |
queue.kafka.historical-data-total.additional-producer-config | TB_KAFKA_HISTORICAL_DATA_TOTAL_ADDITIONAL_PRODUCER_CONFIG | Additional Kafka producer configs separated by semicolon for `tbmq.sys.historical.data` topic | |
queue.kafka.kafka-prefix | TB_KAFKA_PREFIX | The common prefix for all Kafka topics, producers, consumer groups, and consumers. Defaults to empty string meaning no prefix is added |
General service parameters
Parameter | Environment Variable | Default Value | Description |
service.id | TB_SERVICE_ID | Unique id for this service (autogenerated if empty) | |
service.singleton-mode | TB_SERVICE_SINGLETON_MODE | true | Set this parameter to 'true' if your TBMQ is operating as a single-node deployment and you enable limitations for client sessions, Application clients, etc. See 'MQTT_SESSIONS_LIMIT', 'MQTT_APPLICATION_CLIENTS_LIMIT', 'MQTT_TOTAL_RATE_LIMITS_ENABLED', 'MQTT_DEVICE_PERSISTED_MSGS_RATE_LIMITS_ENABLED'. In this mode, rate limiting will be managed locally using an in-memory approach: LocalBucket. This avoids the overhead of communicating with a Redis for rate limiting, which is unnecessary in single-node setups where no other instances are sharing rate limit data. Set this parameter to 'false' if your TBMQ is a cluster deployment (with 2 or more nodes in the cluster). In this mode, rate limiting will be managed using Redis, allowing all nodes in the cluster to enforce consistent rate limits across the entire cluster. |
Actor system parameters
Parameter | Environment Variable | Default Value | Description |
actors.system.throughput | ACTORS_SYSTEM_THROUGHPUT | 5 | Number of messages the actor system will process per actor before switching to processing of messages for next actor |
actors.system.scheduler-pool-size | ACTORS_SYSTEM_SCHEDULER_POOL_SIZE | 1 | Thread pool size for actor system scheduler |
actors.system.max-actor-init-attempts | ACTORS_SYSTEM_MAX_ACTOR_INIT_ATTEMPTS | 10 | Maximum number of attempts to init the actor before disabling the actor |
actors.system.processing-metrics.enabled | ACTORS_SYSTEM_PROCESSING_METRICS_ENABLED | false | Enable/disable actors processing metrics |
actors.system.disconnect-wait-timeout-ms | ACTORS_SYSTEM_DISCONNECT_WAIT_TIMEOUT_MS | 2000 | Actors disconnect timeout in milliseconds |
actors.persisted-device.dispatcher-pool-size | ACTORS_SYSTEM_PERSISTED_DEVICE_DISPATCHER_POOL_SIZE | 8 | Number of threads processing the Device actor's messages |
actors.persisted-device.wait-before-actor-stop-minutes | ACTORS_SYSTEM_PERSISTED_DEVICE_WAIT_BEFORE_ACTOR_STOP_MINUTES | 5 | Minutes to wait before deleting Device actor after disconnect |
actors.client.dispatcher-pool-size | ACTORS_SYSTEM_CLIENT_DISPATCHER_POOL_SIZE | 8 | Number of threads processing the MQTT client actors messages |
actors.client.wait-before-generated-actor-stop-seconds | ACTORS_SYSTEM_CLIENT_WAIT_BEFORE_GENERATED_ACTOR_STOP_SECONDS | 10 | Time in seconds to wait until the actor is stopped for clients that did not specify client id |
actors.client.wait-before-named-actor-stop-seconds | ACTORS_SYSTEM_CLIENT_WAIT_BEFORE_NAMED_ACTOR_STOP_SECONDS | 60 | Time in seconds to wait until the actor is stopped for clients that specified client id |
actors.rule.mail_thread_pool_size | ACTORS_RULE_MAIL_THREAD_POOL_SIZE | 4 | Thread pool size for mail sender executor service |
actors.rule.mail_password_reset_thread_pool_size | ACTORS_RULE_MAIL_PASSWORD_RESET_THREAD_POOL_SIZE | 4 | Thread pool size for password reset emails executor service |
Database time series parameters
Parameter | Environment Variable | Default Value | Description |
database.ts_max_intervals | DATABASE_TS_MAX_INTERVALS | 700 | Max number of DB queries generated by single API call to fetch time series records |
SQL configuration parameters
Parameter | Environment Variable | Default Value | Description |
sql.batch_sort | SQL_BATCH_SORT | true | Specify whether to sort entities before batch update. Should be enabled for cluster mode to avoid deadlocks |
sql.ts_key_value_partitioning | SQL_TS_KV_PARTITIONING | DAYS | Specify partitioning size for timestamp key-value storage. Example: DAYS, MONTHS, YEARS, INDEFINITE |
sql.ts.batch_size | SQL_TS_BATCH_SIZE | 1000 | Batch size for persisting time series inserts |
sql.ts.batch_max_delay | SQL_TS_BATCH_MAX_DELAY_MS | 100 | Max timeout for time series entries queue polling. Value set in milliseconds |
sql.ts.batch_threads | SQL_TS_BATCH_THREADS | 3 | Number of threads that execute batch insert/update statements for time series data. Batch thread count have to be a prime number like 3 or 5 to gain perfect hash distribution |
sql.ts_latest.batch_size | SQL_TS_LATEST_BATCH_SIZE | 1000 | Batch size for persisting latest time series inserts |
sql.ts_latest.batch_max_delay | SQL_TS_LATEST_BATCH_MAX_DELAY_MS | 50 | Max timeout for latest time series entries queue polling. Value set in milliseconds |
sql.ts_latest.batch_threads | SQL_TS_LATEST_BATCH_THREADS | 3 | Number of threads that execute batch insert/update statements for latest time series data. Batch thread count have to be a prime number like 3 or 5 to gain perfect hash distribution |
sql.unauthorized-client.insert.batch_size | SQL_UNAUTHORIZED_CLIENT_INSERT_BATCH_SIZE | 1000 | Batch size for persisting unauthorized client inserts |
sql.unauthorized-client.insert.batch_max_delay | SQL_UNAUTHORIZED_CLIENT_INSERT_BATCH_MAX_DELAY_MS | 50 | Max timeout for unauthorized client insert entries queue polling. Value set in milliseconds |
sql.unauthorized-client.insert.batch_threads | SQL_UNAUTHORIZED_CLIENT_INSERT_BATCH_THREADS | 3 | Number of threads that execute batch insert/update statements for unauthorized client data. Batch thread count have to be a prime number like 3 or 5 to gain perfect hash distribution |
sql.unauthorized-client.delete.batch_size | SQL_UNAUTHORIZED_CLIENT_DELETE_BATCH_SIZE | 1000 | Batch size for processing unauthorized client deletes |
sql.unauthorized-client.delete.batch_max_delay | SQL_UNAUTHORIZED_CLIENT_DELETE_BATCH_MAX_DELAY_MS | 50 | Max timeout for unauthorized client delete entries queue polling. Value set in milliseconds |
sql.unauthorized-client.delete.batch_threads | SQL_UNAUTHORIZED_CLIENT_DELETE_BATCH_THREADS | 3 | Number of threads that execute batch delete statements for unauthorized client data. Batch thread count have to be a prime number like 3 or 5 to gain perfect hash distribution |
sql.ttl.ts.enabled | SQL_TTL_TS_ENABLED | true | The parameter to specify whether to use TTL (Time To Live) for time series records |
sql.ttl.ts.execution_interval_ms | SQL_TTL_TS_EXECUTION_INTERVAL_MS | 86400000 | The parameter to specify the period of execution TTL task for time series records. Value set in milliseconds. Default value corresponds to one day |
sql.ttl.ts.ts_key_value_ttl | SQL_TTL_TS_KEY_VALUE_TTL | 604800 | The parameter to specify system TTL(Time To Live) value for time series records. Value set in seconds. 0 - records are never expired. Default value corresponds to seven days |
sql.ttl.unauthorized_client.enabled | SQL_TTL_UNAUTHORIZED_CLIENT_ENABLED | true | The parameter to specify whether to use TTL (Time To Live) for unauthorized clients |
sql.ttl.unauthorized_client.execution_interval_ms | SQL_TTL_UNAUTHORIZED_CLIENT_EXECUTION_INTERVAL_MS | 86400000 | The parameter to specify the period of execution TTL task for unauthorized clients. Value set in milliseconds. Default value corresponds to one day |
sql.ttl.unauthorized_client.ttl | SQL_TTL_UNAUTHORIZED_CLIENT_TTL | 259200 | The parameter to specify system TTL(Time To Live) value for unauthorized clients. Value set in seconds. 0 - records are never expired. Default value corresponds to three days |
Redis lettuce configuration parameters
Parameter | Environment Variable | Default Value | Description |
lettuce.auto-flush | REDIS_LETTUCE_CMDS_AUTO_FLUSH_ENABLED | true | Enable/disable auto-flush. If disabled, commands are buffered and flushed based on cmd count or time interval |
lettuce.buffered-cmd-count | REDIS_LETTUCE_BUFFERED_CMDS_COUNT | 5 | Number of buffered commands before flush is triggered. Used when auto-flush is disabled. |
lettuce.flush-interval-ms | REDIS_LETTUCE_FLUSH_INTERVAL_MS | 5 | Maximum time in milliseconds to buffer commands before flushing, regardless of cmd count. |
SQL DAO configuration parameters
Parameter | Environment Variable | Default Value | Description |
spring.data.jpa.repositories.enabled | SPRING_DATA_JPA_REPOSITORIES_ENABLED | true | Enable/Disable the Spring Data JPA repositories support |
spring.jpa.open-in-view | SPRING_JPA_OPEN_IN_VIEW | false | Enable/disable OSIV |
spring.jpa.hibernate.ddl-auto | SPRING_JPA_HIBERNATE_DDL_AUTO | none | You can set a Hibernate feature that controls the DDL behavior in a more fine-grained way. The standard Hibernate property values are none, validate, update, create-drop. Spring Boot chooses a default value for you based on whether it thinks your database is embedded (default create-drop) or not (default none) |
spring.datasource.driverClassName | SPRING_DRIVER_CLASS_NAME | org.postgresql.Driver | Database driver for Spring JPA |
spring.datasource.url | SPRING_DATASOURCE_URL | jdbc:postgresql://localhost:5432/thingsboard_mqtt_broker | Database connection URL |
spring.datasource.username | SPRING_DATASOURCE_USERNAME | postgres | Database username |
spring.datasource.password | SPRING_DATASOURCE_PASSWORD | postgres | Database user password |
spring.datasource.hikari.maximumPoolSize | SPRING_DATASOURCE_MAXIMUM_POOL_SIZE | 16 | This property allows the number of connections in the pool to increase as demand increases. At the same time, the property ensures that the pool doesn't grow to the point of exhausting a system's resources, which ultimately affects an application's performance and availability |
spring.datasource.hikari.maxLifetime | SPRING_DATASOURCE_MAX_LIFETIME | 600000 | This property controls the max lifetime in milliseconds of a connection. Only when it is closed will it then be removed. Default is 10 minutes |
General Spring parameters
Parameter | Environment Variable | Default Value | Description |
spring.lifecycle.timeout-per-shutdown-phase | SPRING_LIFECYCLE_TIMEOUT_PER_SHUTDOWN_PHASE | 1m | The server will wait for active requests to finish their work up to a specified amount of time before graceful shutdown |
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation | SPRING_JPA_HIBERNATE_JDBC_LOB_NON_CONTEXTUAL_CREATION | true | Setting this property to true disables contextual LOB creation and forces the use of Hibernate's own LOB implementation. Fixes Postgres JPA Error |
spring.jpa.properties.hibernate.order_by.default_null_ordering | SPRING_JPA_HIBERNATE_ORDER_BY_DEFAULT_NULL_ORDERING | last | Default ordering for null values |
spring.data.redis.repositories.enabled | SPRING_DATA_REDIS_REPOSITORIES_ENABLED | false | Disables redis repositories scanning |
spring.freemarker.checkTemplateLocation | SPRING_FREEMARKER_CHECK_TEMPLATE_LOCATION | false | Spring freemarker configuration to check that the templates location exists |
spring.mvc.async.request-timeout | SPRING_MVC_ASYNC_REQUEST_TIMEOUT | 30000 | The default timeout for asynchronous requests in milliseconds |
spring.mvc.pathmatch.matching-strategy | SPRING_MVC_PATH_MATCH_MATCHING_STRATEGY | ANT_PATH_MATCHER | For endpoints matching in Swagger |
Security parameters
Parameter | Environment Variable | Default Value | Description |
security.mqtt.auth_strategy | SECURITY_MQTT_AUTH_STRATEGY | BOTH | BOTH or SINGLE - the former means the first attempt of client authentication will be by 'basic' provider and then by 'ssl' provider if 'basic' is not successful; the latter means only one attempt is done according to the listener communication chosen (see listener.tcp/listener.ssl) |
security.mqtt.basic.enabled | SECURITY_MQTT_BASIC_ENABLED | false | If enabled the server will try to authenticate client with clientId and/or username and/or password |
security.mqtt.ssl.enabled | SECURITY_MQTT_SSL_ENABLED | false | If enabled the server will try to authenticate client with client certificate chain |
security.mqtt.ssl.skip_validity_check_for_client_cert | SECURITY_MQTT_SSL_SKIP_VALIDITY_CHECK_FOR_CLIENT_CERT | false | Skip certificate validity check for client certificates |
security.jwt.tokenExpirationTime | JWT_TOKEN_EXPIRATION_TIME | 9000 | User JWT Token expiration time in seconds (2.5 hours) |
security.jwt.refreshTokenExpTime | JWT_REFRESH_TOKEN_EXPIRATION_TIME | 604800 | User JWT Refresh Token expiration time in seconds (1 week) |
security.jwt.tokenIssuer | JWT_TOKEN_ISSUER | thingsboard.io | User JWT Token issuer |
security.jwt.tokenSigningKey | JWT_TOKEN_SIGNING_KEY | Qk1xUnloZ0VQTlF1VlNJQXZ4cWhiNWt1cVd1ZzQ5cWpENUhMSHlaYmZIM0JrZ2pPTVlhQ3N1Z0ZMUnd0SDBieg== | User JWT Token sign key |
security.basic.enabled | SECURITY_BASIC_ENABLED | false | Enable/Disable basic security options |
security.user_login_case_sensitive | SECURITY_USER_LOGIN_CASE_SENSITIVE | true | Enable/disable case-sensitive username login |
MQTT parameters
Parameter | Environment Variable | Default Value | Description |
mqtt.connect.threads | MQTT_CONNECT_THREADS | 4 | Number of threads for clients connection thread pool |
mqtt.msg-subscriptions-parallel-processing | MQTT_MSG_SUBSCRIPTIONS_PARALLEL_PROCESSING | false | Enable/disable processing of found subscriptions in parallel for published messages. Helpful when the "PUBLISH" message should be delivered to lots of subscribers. It is recommended to count the impact of this parameter before setting it on production |
mqtt.pre-connect-queue.max-size | MQTT_PRE_CONNECT_QUEUE_MAX_SIZE | 10000 | Max number of messages that can be stored in queue before client gets connected and start processing them |
mqtt.max-in-flight-msgs | MQTT_MAX_IN_FLIGHT_MSGS | 1000 | Max number of PUBLISH messages not yet responded |
mqtt.flow-control.enabled | MQTT_FLOW_CONTROL_ENABLED | true | Enable/disable flow control MQTT 5 feature for server. If disabled, the server will not control the number of messages sent to subscribers by "Receive Maximum". This feature works for MQTT 3.x clients as well when enabled. "Receive Maximum" for MQTT 3.x clients can be set using `MQTT_FLOW_CONTROL_MQTT_3X_RECEIVE_MAX` parameter |
mqtt.flow-control.timeout | MQTT_FLOW_CONTROL_TIMEOUT | 1000 | Timeout to wait in case there is nothing to process regarding the flow control feature. The separate thread is responsible for sending delayed messages to subscribers. If no clients are affected by flow control restrictions, there is no need to continuously try to find and send such messages |
mqtt.flow-control.ttl | MQTT_FLOW_CONTROL_TTL | 600 | Time in seconds to store delayed messages for subscribers. Delayed messages are those that can not be sent immediately due to flow control restrictions. Default is 10 minutes |
mqtt.flow-control.delayed-queue-max-size | MQTT_FLOW_CONTROL_DELAYED_QUEUE_MAX_SIZE | 1000 | Max allowed queue length for delayed messages - publishing messages from broker to client when in-flight window is full |
mqtt.flow-control.mqtt3x-receive-max | MQTT_FLOW_CONTROL_MQTT_3X_RECEIVE_MAX | 65535 | Receive maximum value for MQTT 3.x clients |
mqtt.retransmission.enabled | MQTT_RETRANSMISSION_ENABLED | false | Enable/disable MQTT msg retransmission |
mqtt.retransmission.scheduler-pool-size | MQTT_RETRANSMISSION_SCHEDULER_POOL_SIZE | 0 | Retransmission scheduler pool size (0 means the number of processors available to the JVM multiplied by 2 will be used) |
mqtt.retransmission.initial-delay | MQTT_RETRANSMISSION_INITIAL_DELAY | 10 | Initial delay for the msg retransmission in seconds |
mqtt.retransmission.period | MQTT_RETRANSMISSION_PERIOD | 5 | Increment period for the subsequent retransmissions of the msg in seconds (retransmission interval is increased by period for each run) |
mqtt.write-and-flush | MQTT_MSG_WRITE_AND_FLUSH | true | If enabled, each message is published to non-persistent subscribers with flush. When disabled, the messages are buffered in the channel and are flushed once in a while |
mqtt.buffered-msg-count | MQTT_BUFFERED_MSG_COUNT | 5 | Number of messages buffered in the channel before the flush is made. Used when `MQTT_MSG_WRITE_AND_FLUSH` = false |
mqtt.keep-alive.monitoring-delay-ms | MQTT_KEEP_ALIVE_MONITORING_DELAY_MS | 1000 | Time in milliseconds between subsequent checks for the non-active clients |
mqtt.keep-alive.max-keep-alive | MQTT_KEEP_ALIVE_MAX_KEEP_ALIVE_SEC | 600 | Max value in seconds allowed by the server for keep-alive that can be used by clients. Defaults to 10 minutes, used for MQTT v5 clients |
mqtt.topic.max-segments-count | MQTT_TOPIC_MAX_SEGMENTS_COUNT | 0 | Maximum number of segments in topics. If it's too large, processing of topics with too much segments can lead to errors. 0 means limitation is disabled |
mqtt.topic.alias-max | MQTT_TOPIC_ALIAS_MAX | 10 | Max count of topic aliases per connection. 0 indicates that the Broker does not accept any Topic Aliases for all connections meaning the 'Topic Alias' feature is disabled |
mqtt.topic.min-length-for-alias-replacement | MQTT_TOPIC_MIN_LENGTH_FOR_ALIAS_REPLACEMENT | 50 | Minimal required topic name length that Broker publishes to client that can be replaced with topic alias (e.g. if topic has more than 50 chars - it can be replaced with alias) |
mqtt.shared-subscriptions.processing-type | MQTT_SHARED_SUBSCRIPTIONS_PROCESSING_TYPE | ROUND_ROBIN | Processing strategy type - how messages are split between clients in shared subscription. Supported types: ROUND_ROBIN |
mqtt.subscription-trie.wait-for-clear-lock-ms | MQTT_SUB_TRIE_WAIT_FOR_CLEAR_LOCK_MS | 100 | Maximum pause in milliseconds for clearing subscription storage from empty nodes. If wait is unsuccessful the subscribing clients will be resumed, but the clear will fail |
mqtt.subscription-trie.clear-nodes-cron | MQTT_SUB_TRIE_CLEAR_NODES_CRON | 0 0 0 * * * | Cron job to schedule clearing of empty subscription nodes. Defaults to 'every day at midnight' |
mqtt.subscription-trie.clear-nodes-zone | MQTT_SUB_TRIE_CLEAR_NODES_ZONE | UTC | Timezone for the subscription clearing cron-job |
mqtt.retain-msg-trie.wait-for-clear-lock-ms | MQTT_RETAIN_MSG_TRIE_WAIT_FOR_CLEAR_LOCK_MS | 100 | Maximum pause in milliseconds for clearing retain msg storage from empty nodes. If wait is unsuccessful retain messages processing will be resumed, but the clear will fail |
mqtt.retain-msg-trie.clear-nodes-cron | MQTT_RETAIN_MSG_TRIE_CLEAR_NODES_CRON | 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 | MQTT_RETAIN_MSG_TRIE_CLEAR_NODES_ZONE | UTC | Timezone for retain msg clearing cron-job |
mqtt.retain-msg.expiry-processing-period-ms | MQTT_RETAIN_MSG_EXPIRY_PROCESSING_PERIOD_MS | 60000 | Period in milliseconds to clear retained messages by expiry feature of MQTT |
mqtt.client-session-expiry.cron | MQTT_CLIENT_SESSION_EXPIRY_CRON | 0 0 * ? * * | Cron job to schedule clearing of expired and not active client sessions. Defaults to 'every hour', e.g. at 20:00:00 UTC |
mqtt.client-session-expiry.zone | MQTT_CLIENT_SESSION_EXPIRY_ZONE | UTC | Timezone for the client sessions clearing cron-job |
mqtt.client-session-expiry.max-expiry-interval | MQTT_CLIENT_SESSION_EXPIRY_MAX_EXPIRY_INTERVAL | 604800 | Max expiry interval allowed of inactive sessions in seconds. The current value corresponds to one week |
mqtt.client-session-expiry.ttl | MQTT_CLIENT_SESSION_EXPIRY_TTL | 604800 | Administration TTL in seconds for clearing sessions that do not expire by session expiry interval (e.g. MQTTv3 cleanSession=false or MQTTv5 cleanStart=false && sessionExpiryInterval == 0). The current value corresponds to one week. 0 or negative value means this TTL is disabled |
mqtt.version-3-1.max-client-id-length | MQTT_3_1_MAX_CLIENT_ID_LENGTH | 1024 | Max ClientId length for 3.1 version of protocol |
mqtt.persistent-session.device.persisted-messages.limit | MQTT_PERSISTENT_SESSION_DEVICE_PERSISTED_MESSAGES_LIMIT | 10000 | Maximum number of PUBLISH messages stored for each persisted DEVICE client |
mqtt.persistent-session.device.persisted-messages.ttl | MQTT_PERSISTENT_SESSION_DEVICE_PERSISTED_MESSAGES_TTL | 604800 | TTL of persisted DEVICE messages in seconds. The current value corresponds to one week |
mqtt.persistent-session.device.persisted-messages.write-and-flush | MQTT_PERSISTENT_MSG_WRITE_AND_FLUSH | true | If enabled, each message is published to persistent DEVICE client subscribers with flush. When disabled, the messages are buffered in the channel and are flushed once in a while |
mqtt.persistent-session.device.persisted-messages.buffered-msg-count | MQTT_PERSISTENT_BUFFERED_MSG_COUNT | 5 | Number of messages buffered in the channel before the flush is made. Used when `MQTT_PERSISTENT_MSG_WRITE_AND_FLUSH` = false |
mqtt.rate-limits.threads-count | MQTT_RATE_LIMITS_THREADS_COUNT | 1 | The number of parallel threads dedicated to processing total rate limit checks for incoming messages |
mqtt.rate-limits.batch-size | MQTT_RATE_LIMITS_BATCH_SIZE | 50 | The number of messages to process in each batch when checking total rate limits for incoming messages |
mqtt.rate-limits.period-ms | MQTT_RATE_LIMITS_PERIOD_MS | 50 | The period, in milliseconds, to wait before processing a batch of messages for total rate limits for incoming messages |
mqtt.rate-limits.total.enabled | MQTT_TOTAL_RATE_LIMITS_ENABLED | false | Enable/disable total incoming and outgoing messages rate limits for the broker (per whole cluster) |
mqtt.rate-limits.total.config | MQTT_TOTAL_RATE_LIMITS_CONFIG | 1000:1,50000:60 | Limit the maximum count of total incoming and outgoing messages for specified time intervals in seconds. Comma separated list of limit:seconds pairs. Example: 1000 messages per second or 50000 messages per minute |
mqtt.rate-limits.incoming-publish.enabled | MQTT_INCOMING_RATE_LIMITS_ENABLED | false | Enable/disable publish rate limits per client for incoming messages to the broker from publishers |
mqtt.rate-limits.incoming-publish.client-config | MQTT_INCOMING_RATE_LIMITS_CLIENT_CONFIG | 10:1,300:60 | Limit the maximum count of publish messages per publisher for specified time intervals in seconds. Comma separated list of limit:seconds pairs. Example: 10 messages per second or 300 messages per minute |
mqtt.rate-limits.outgoing-publish.enabled | MQTT_OUTGOING_RATE_LIMITS_ENABLED | false | Enable/disable publish rate limits per client for outgoing messages from the broker to subscribers. Used only for non-persistent subscribers with QoS = 0 ("AT_MOST_ONCE") |
mqtt.rate-limits.outgoing-publish.client-config | MQTT_OUTGOING_RATE_LIMITS_CLIENT_CONFIG | 10:1,300:60 | Limit the maximum count of publish messages per subscriber for specified time intervals in seconds. Comma separated list of limit:seconds pairs. Example: 10 messages per second or 300 messages per minute |
mqtt.rate-limits.device-persisted-messages.enabled | MQTT_DEVICE_PERSISTED_MSGS_RATE_LIMITS_ENABLED | false | Enable/disable Device clients persisted messages rate limits for the broker (per whole cluster) |
mqtt.rate-limits.device-persisted-messages.config | MQTT_DEVICE_PERSISTED_MSGS_RATE_LIMITS_CONFIG | 100:1,1000:60 | Limit the maximum count of Device clients persisted messages for specified time intervals in seconds. Comma separated list of limit:seconds pairs. Example: 100 messages per second or 1000 messages per minute |
mqtt.sessions-limit | MQTT_SESSIONS_LIMIT | 0 | Limit the total number of sessions (connected + disconnected) stored on the broker, not individually for each server (node) if it is a cluster, but as a collective limit. For example, when set to 1000 either the single broker node or cluster of 2 or X nodes can store 1000 sessions in total. It is a soft limit meaning a bit more than 1000 sessions can be stored. A setting of 0 means the limitation is disabled |
mqtt.sessions-limit-correction | MQTT_SESSIONS_LIMIT_CORRECTION | false | Enable/disable sessions limit value correction in the cache |
mqtt.sessions-limit-correction-period-ms | MQTT_SESSIONS_LIMIT_CORRECTION_PERIOD_MS | 10800000 | Period in milliseconds to execute the job to correct the value of sessions limit in the cache. Defaults to 3 hours |
mqtt.application-clients-limit | MQTT_APPLICATION_CLIENTS_LIMIT | 0 | Limit the total number of Application persistent clients. A setting of 0 means the limitation is disabled |
mqtt.handler.all_msg_callback_threads | MQTT_HANDLER_ALL_MSG_CALLBACK_THREADS | 2 | Number of threads in thread pool for processing all publish messages callbacks after sending them to Kafka |
mqtt.handler.device_msg_callback_threads | MQTT_HANDLER_DEVICE_MSG_CALLBACK_THREADS | 2 | Number of threads in thread pool for processing device persisted publish messages callbacks after sending them to Kafka |
mqtt.handler.app_msg_callback_threads | MQTT_HANDLER_APP_MSG_CALLBACK_THREADS | 2 | Number of threads in thread pool for processing application persisted publish messages callbacks after sending them to Kafka |
mqtt.response-info | MQTT_RESPONSE_INFO | Response info value for MQTT 5 request-response feature to be 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 topic to be used for request-response feature, e.g. "example/" |
Cache parameters
Parameter | Environment Variable | Default Value | Description |
cache.stats.enabled | CACHE_STATS_ENABLED | true | Enable/disable cache stats logging |
cache.stats.intervalSec | CACHE_STATS_INTERVAL_SEC | 60 | Cache stats logging interval in seconds |
cache.cache-prefix | CACHE_PREFIX | The common prefix for all cache keys. Defaults to empty string meaning no prefix is added | |
cache.specs.mqttClientCredentials.timeToLiveInMinutes | CACHE_SPECS_MQTT_CLIENT_CREDENTIALS_TTL | 1440 | Cache TTL in minutes. Defaults to 1 day |
cache.specs.basicCredentialsPassword.timeToLiveInMinutes | CACHE_SPECS_BASIC_CREDENTIALS_PASSWORD_TTL | 1 | Cache TTL in minutes. It is recommended to set this TTL as a small value to not store them for a long time (e.g., 1-5 minutes) |
cache.specs.sslRegexBasedCredentials.timeToLiveInMinutes | CACHE_SPECS_SSL_REGEX_BASED_CREDENTIALS_TTL | 1440 | Cache TTL in minutes. Defaults to 1 day |
cache.specs.clientSessionCredentials.timeToLiveInMinutes | CACHE_SPECS_CLIENT_SESSION_CREDENTIALS_TTL | 0 | Cache TTL in minutes. Defaults to 0 meaning the cache is eternal |
cache.specs.clientMqttVersion.timeToLiveInMinutes | CACHE_SPECS_CLIENT_MQTT_VERSION_TTL | 0 | Cache TTL in minutes. Defaults to 0 meaning the cache is eternal |
Redis configuration parameters
Parameter | Environment Variable | Default Value | Description |
redis.connection.type | REDIS_CONNECTION_TYPE | standalone | Connection type: standalone or cluster or sentinel |
redis.standalone.host | REDIS_HOST | localhost | Redis connection host |
redis.standalone.port | REDIS_PORT | 6379 | Redis connection port |
redis.standalone.useDefaultClientConfig | REDIS_USE_DEFAULT_CLIENT_CONFIG | true | Use the default Redis configuration file |
redis.standalone.clientName | REDIS_CLIENT_NAME | standalone | This value may be used only if you did not use the default ClientConfig, to specify client name |
redis.standalone.connectTimeout | REDIS_CLIENT_CONNECT_TIMEOUT | 30000 | This value may be used only if you did not use the default ClientConfig, to specify connection timeout |
redis.standalone.readTimeout | REDIS_CLIENT_READ_TIMEOUT | 60000 | This value may be used only if you did not use the default ClientConfig, to specify read timeout |
redis.standalone.usePoolConfig | REDIS_CLIENT_USE_POOL_CONFIG | false | This value may be used only if you did not use the default ClientConfig, to use pool config section |
redis.cluster.nodes | REDIS_NODES | Comma-separated list of "host:port" pairs to bootstrap from | |
redis.cluster.maxRedirects | REDIS_MAX_REDIRECTS | 12 | Maximum number of redirects to follow when executing commands across the cluster |
redis.cluster.useDefaultPoolConfig | REDIS_CLUSTER_USE_DEFAULT_POOL_CONFIG | true | If set false will be used pool config build from values of the pool config section |
redis.sentinel.master | REDIS_MASTER | Name of master node | |
redis.sentinel.sentinels | REDIS_SENTINELS | Comma-separated list of "host:port" pairs of sentinels | |
redis.sentinel.password | REDIS_SENTINEL_PASSWORD | Password to authenticate with sentinel | |
redis.sentinel.useDefaultPoolConfig | REDIS_SENTINEL_USE_DEFAULT_POOL_CONFIG | true | If set false will be used pool config build from values of the pool config section |
redis.db | REDIS_DB | 0 | DB index |
redis.password | REDIS_PASSWORD | DB password | |
redis.pool_config.maxTotal | REDIS_POOL_CONFIG_MAX_TOTAL | 128 | Maximum number of connections that can be allocated by the connection pool |
redis.pool_config.maxIdle | REDIS_POOL_CONFIG_MAX_IDLE | 128 | Maximum number of idle connections that can be maintained in the pool without being closed |
redis.pool_config.minIdle | REDIS_POOL_CONFIG_MIN_IDLE | 16 | Minimum number of idle connections that can be maintained in the pool without being closed |
redis.pool_config.testOnBorrow | REDIS_POOL_CONFIG_TEST_ON_BORROW | true | Enable/Disable PING command sent when a connection is borrowed |
redis.pool_config.testOnReturn | REDIS_POOL_CONFIG_TEST_ON_RETURN | true | The property is used to specify whether to test the connection before returning it to the connection pool |
redis.pool_config.testWhileIdle | REDIS_POOL_CONFIG_TEST_WHILE_IDLE | true | Indicates whether to use the ping command to monitor the connection validity during idle resource monitoring. Invalid connections will be destroyed |
redis.pool_config.minEvictableMs | REDIS_POOL_CONFIG_MIN_EVICTABLE_MS | 60000 | Minimum time the connection should be idle before it can be evicted from the connection pool. The value is set in milliseconds |
redis.pool_config.evictionRunsMs | REDIS_POOL_CONFIG_EVICTION_RUNS_MS | 30000 | Specifies the time interval in milliseconds between two consecutive eviction runs |
redis.pool_config.maxWaitMills | REDIS_POOL_CONFIG_MAX_WAIT_MS | 60000 | Maximum time in milliseconds where a client is willing to wait for a connection from the pool when all connections are exhausted |
redis.pool_config.numberTestsPerEvictionRun | REDIS_POOL_CONFIG_NUMBER_TESTS_PER_EVICTION_RUN | 3 | Specifies the number of connections to test for eviction during each eviction run |
redis.pool_config.blockWhenExhausted | REDIS_POOL_CONFIG_BLOCK_WHEN_EXHAUSTED | true | Determines the behavior when a thread requests a connection from the pool, but there are no available connections, and the pool cannot create more due to the maxTotal configuration |
Statistics parameters
Parameter | Environment Variable | Default Value | Description |
stats.enabled | STATS_ENABLED | true | Enable/disable stats printing to the logs |
stats.print-interval-ms | STATS_PRINT_INTERVAL_MS | 60000 | Period in milliseconds to print stats. Default value corresponds to 1 minute |
stats.application-processor.enabled | APPLICATION_PROCESSOR_STATS_ENABLED | true | Enable/disable specific Application clients stats |
Historical data statistics parameters
Parameter | Environment Variable | Default Value | Description |
historical-data-report.enabled | HISTORICAL_DATA_REPORT_ENABLED | true | Enable/disable historical data stats reporting and persistence to the time series |
historical-data-report.interval | HISTORICAL_DATA_REPORT_INTERVAL | 1 | Period in minutes (1-60) to collect stats for each broker. Used in cron expression |
historical-data-report.zone | HISTORICAL_DATA_REPORT_ZONE | UTC | Timezone for the historical data stats processing |
Metrics management parameters
Parameter | Environment Variable | Default Value | Description |
management.endpoints.web.exposure.include | METRICS_ENDPOINTS_EXPOSE | prometheus | Expose metrics endpoint (use value 'info' to disable prometheus metrics) |
Spring CORS configuration
Parameter | Environment Variable | Default Value | Description |
spring.mvc.cors.mappings."[/api/**]".allowed-origin-patterns | MVC_CORS_API_ALLOWED_ORIGIN_PATTERNS | * | Comma-separated list of origins to allow. '*' allows all origins. When not set, CORS support is disabled |
spring.mvc.cors.mappings."[/api/**]".allowed-methods | MVC_CORS_API_ALLOWED_METHODS | * | Comma-separated list of methods to allow. '*' allows all methods |
spring.mvc.cors.mappings."[/api/**]".allowed-headers | MVC_CORS_API_ALLOWED_HEADERS | * | Comma-separated list of headers to allow in a request. '*' allows all headers |
spring.mvc.cors.mappings."[/api/**]".max-age | MVC_CORS_API_MAX_AGE | 1800 | How long, in seconds, the response from a pre-flight request can be cached by clients |
spring.mvc.cors.mappings."[/api/**]".allow-credentials | MVC_CORS_API_ALLOW_CREDENTIALS | true | Set whether credentials are supported. When not set, credentials are not supported |
Spring doc common parameters
Parameter | Environment Variable | Default Value | Description |
springdoc.api-docs.enabled | SWAGGER_ENABLED | true | If false swagger API docs will be unavailable |
springdoc.default-produces-media-type | SWAGGER_DEFAULT_PRODUCES_MEDIA_TYPE | application/json | Swagger default produces media-type |
Swagger common parameters
Parameter | Environment Variable | Default Value | Description |
swagger.api_path | SWAGGER_API_PATH | /api/** | General swagger match pattern of swagger UI links |
swagger.security_path_regex | SWAGGER_SECURITY_PATH_REGEX | /api/.* | General swagger match pattern path of swagger UI links |
swagger.non_security_path_regex | SWAGGER_NON_SECURITY_PATH_REGEX | /api/noauth.* | Non-security API path match pattern of swagger UI links |
swagger.title | SWAGGER_TITLE | TBMQ REST API | The title on the API doc UI page |
swagger.description | SWAGGER_DESCRIPTION | TBMQ open-source REST API documentation | The description on the API doc UI page |
swagger.contact.name | SWAGGER_CONTACT_NAME | TBMQ team | The contact name on the API doc UI page |
swagger.contact.url | SWAGGER_CONTACT_URL | https://thingsboard.io/products/mqtt-broker/ | The contact URL on the API doc UI page |
swagger.contact.email | SWAGGER_CONTACT_EMAIL | [email protected] | The contact email on the API doc UI page |
swagger.license.title | SWAGGER_LICENSE_TITLE | Apache License Version 2.0 | The license title on the API doc UI page |
swagger.license.url | SWAGGER_LICENSE_URL | https://github.com/thingsboard/tbmq/blob/main/LICENSE | Link to the license body on the API doc UI page |
swagger.version | SWAGGER_VERSION | The version of the API doc to display. Default to the package version |
Application info parameters
Parameter | Environment Variable | Default Value | Description |
app.version | "@project.version@" | Application version |
Analysis parameters
Parameter | Environment Variable | Default Value | Description |
analysis.log.analyzed-client-ids | ANALYSIS_LOG_CLIENT_IDS | List of Client Ids separated with comas. Additional events for those clients will be logged |