336 lines
19 KiB
YAML
336 lines
19 KiB
YAML
#
|
|
# Copyright © 2016-2023 The Thingsboard Authors
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
# If you enabled process metrics you should also enable 'web-environment'.
|
|
spring.main.web-environment: "${WEB_APPLICATION_ENABLE:false}"
|
|
# If you enabled process metrics you should set 'web-application-type' to 'servlet' value.
|
|
spring.main.web-application-type: "${WEB_APPLICATION_TYPE:none}"
|
|
|
|
spring.main.allow-circular-references: "true"
|
|
|
|
server:
|
|
# Server bind address (has no effect if web-environment is disabled).
|
|
address: "${HTTP_BIND_ADDRESS:0.0.0.0}"
|
|
# Server bind port (has no effect if web-environment is disabled).
|
|
port: "${HTTP_BIND_PORT:8083}"
|
|
|
|
# Zookeeper connection parameters. Used for service discovery.
|
|
zk:
|
|
# Enable/disable zookeeper discovery service.
|
|
enabled: "${ZOOKEEPER_ENABLED:false}"
|
|
# Zookeeper connect string
|
|
url: "${ZOOKEEPER_URL:localhost:2181}"
|
|
# Zookeeper retry interval in milliseconds
|
|
retry_interval_ms: "${ZOOKEEPER_RETRY_INTERVAL_MS:3000}"
|
|
# Zookeeper connection timeout in milliseconds
|
|
connection_timeout_ms: "${ZOOKEEPER_CONNECTION_TIMEOUT_MS:3000}"
|
|
# Zookeeper session timeout in milliseconds
|
|
session_timeout_ms: "${ZOOKEEPER_SESSION_TIMEOUT_MS:3000}"
|
|
# Name of the directory in zookeeper 'filesystem'
|
|
zk_dir: "${ZOOKEEPER_NODES_DIR:/thingsboard}"
|
|
recalculate_delay: "${ZOOKEEPER_RECALCULATE_DELAY_MS:0}"
|
|
|
|
cache:
|
|
type: "${CACHE_TYPE:redis}"
|
|
|
|
redis:
|
|
# standalone or cluster or sentinel
|
|
connection:
|
|
type: "${REDIS_CONNECTION_TYPE:standalone}"
|
|
standalone:
|
|
host: "${REDIS_HOST:localhost}"
|
|
port: "${REDIS_PORT:6379}"
|
|
useDefaultClientConfig: "${REDIS_USE_DEFAULT_CLIENT_CONFIG:true}"
|
|
# this value may be used only if you used not default ClientConfig
|
|
clientName: "${REDIS_CLIENT_NAME:standalone}"
|
|
# this value may be used only if you used not default ClientConfig
|
|
connectTimeout: "${REDIS_CLIENT_CONNECT_TIMEOUT:30000}"
|
|
# this value may be used only if you used not default ClientConfig
|
|
readTimeout: "${REDIS_CLIENT_READ_TIMEOUT:60000}"
|
|
# this value may be used only if you used not default ClientConfig
|
|
usePoolConfig: "${REDIS_CLIENT_USE_POOL_CONFIG:false}"
|
|
cluster:
|
|
# Comma-separated list of "host:port" pairs to bootstrap from.
|
|
nodes: "${REDIS_NODES:}"
|
|
# Maximum number of redirects to follow when executing commands across the cluster.
|
|
max-redirects: "${REDIS_MAX_REDIRECTS:12}"
|
|
# if set false will be used pool config build from values of the pool config section
|
|
useDefaultPoolConfig: "${REDIS_USE_DEFAULT_POOL_CONFIG:true}"
|
|
sentinel:
|
|
# name of master node
|
|
master: "${REDIS_MASTER:}"
|
|
# comma-separated list of "host:port" pairs of sentinels
|
|
sentinels: "${REDIS_SENTINELS:}"
|
|
# password to authenticate with sentinel
|
|
password: "${REDIS_SENTINEL_PASSWORD:}"
|
|
# if set false will be used pool config build from values of the pool config section
|
|
useDefaultPoolConfig: "${REDIS_USE_DEFAULT_POOL_CONFIG:true}"
|
|
# db index
|
|
db: "${REDIS_DB:0}"
|
|
# db password
|
|
password: "${REDIS_PASSWORD:}"
|
|
# pool config
|
|
pool_config:
|
|
maxTotal: "${REDIS_POOL_CONFIG_MAX_TOTAL:128}"
|
|
maxIdle: "${REDIS_POOL_CONFIG_MAX_IDLE:128}"
|
|
minIdle: "${REDIS_POOL_CONFIG_MIN_IDLE:16}"
|
|
testOnBorrow: "${REDIS_POOL_CONFIG_TEST_ON_BORROW:true}"
|
|
testOnReturn: "${REDIS_POOL_CONFIG_TEST_ON_RETURN:true}"
|
|
testWhileIdle: "${REDIS_POOL_CONFIG_TEST_WHILE_IDLE:true}"
|
|
minEvictableMs: "${REDIS_POOL_CONFIG_MIN_EVICTABLE_MS:60000}"
|
|
evictionRunsMs: "${REDIS_POOL_CONFIG_EVICTION_RUNS_MS:30000}"
|
|
maxWaitMills: "${REDIS_POOL_CONFIG_MAX_WAIT_MS:60000}"
|
|
numberTestsPerEvictionRun: "${REDIS_POOL_CONFIG_NUMBER_TESTS_PER_EVICTION_RUN:3}"
|
|
blockWhenExhausted: "${REDIS_POOL_CONFIG_BLOCK_WHEN_EXHAUSTED:true}"
|
|
|
|
# MQTT server parameters
|
|
transport:
|
|
mqtt:
|
|
bind_address: "${MQTT_BIND_ADDRESS:0.0.0.0}"
|
|
bind_port: "${MQTT_BIND_PORT:1883}"
|
|
# Enable proxy protocol support. Disabled by default. If enabled, supports both v1 and v2.
|
|
# Useful to get the real IP address of the client in the logs and for rate limits.
|
|
proxy_enabled: "${MQTT_PROXY_PROTOCOL_ENABLED:false}"
|
|
timeout: "${MQTT_TIMEOUT:10000}"
|
|
msg_queue_size_per_device_limit: "${MQTT_MSG_QUEUE_SIZE_PER_DEVICE_LIMIT:100}" # messages await in the queue before device connected state. This limit works on low level before TenantProfileLimits mechanism
|
|
netty:
|
|
leak_detector_level: "${NETTY_LEAK_DETECTOR_LVL:DISABLED}"
|
|
boss_group_thread_count: "${NETTY_BOSS_GROUP_THREADS:1}"
|
|
worker_group_thread_count: "${NETTY_WORKER_GROUP_THREADS:12}"
|
|
max_payload_size: "${NETTY_MAX_PAYLOAD_SIZE:65536}"
|
|
so_keep_alive: "${NETTY_SO_KEEPALIVE:false}"
|
|
# MQTT SSL configuration
|
|
ssl:
|
|
# Enable/disable SSL support
|
|
enabled: "${MQTT_SSL_ENABLED:false}"
|
|
# MQTT SSL bind address
|
|
bind_address: "${MQTT_SSL_BIND_ADDRESS:0.0.0.0}"
|
|
# MQTT SSL bind port
|
|
bind_port: "${MQTT_SSL_BIND_PORT:8883}"
|
|
# SSL protocol: See https://docs.oracle.com/en/java/javase/11/docs/specs/security/standard-names.html#sslcontext-algorithms
|
|
protocol: "${MQTT_SSL_PROTOCOL:TLSv1.2}"
|
|
# Server SSL credentials
|
|
credentials:
|
|
# Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore)
|
|
type: "${MQTT_SSL_CREDENTIALS_TYPE:PEM}"
|
|
# PEM server credentials
|
|
pem:
|
|
# Path to the server certificate file (holds server certificate or certificate chain, may include server private key)
|
|
cert_file: "${MQTT_SSL_PEM_CERT:mqttserver.pem}"
|
|
# Path to the server certificate private key file. Optional by default. Required if the private key is not present in server certificate file;
|
|
key_file: "${MQTT_SSL_PEM_KEY:mqttserver_key.pem}"
|
|
# Server certificate private key password (optional)
|
|
key_password: "${MQTT_SSL_PEM_KEY_PASSWORD:server_key_password}"
|
|
# Keystore server credentials
|
|
keystore:
|
|
# Type of the key store (JKS or PKCS12)
|
|
type: "${MQTT_SSL_KEY_STORE_TYPE:JKS}"
|
|
# Path to the key store that holds the SSL certificate
|
|
store_file: "${MQTT_SSL_KEY_STORE:mqttserver.jks}"
|
|
# Password used to access the key store
|
|
store_password: "${MQTT_SSL_KEY_STORE_PASSWORD:server_ks_password}"
|
|
# Optional alias of the private key; If not set, the platform will load the first private key from the keystore;
|
|
key_alias: "${MQTT_SSL_KEY_ALIAS:}"
|
|
# Password used to access the key
|
|
key_password: "${MQTT_SSL_KEY_PASSWORD:server_key_password}"
|
|
# Skip certificate validity check for client certificates.
|
|
skip_validity_check_for_client_cert: "${MQTT_SSL_SKIP_VALIDITY_CHECK_FOR_CLIENT_CERT:false}"
|
|
sessions:
|
|
inactivity_timeout: "${TB_TRANSPORT_SESSIONS_INACTIVITY_TIMEOUT:300000}"
|
|
report_timeout: "${TB_TRANSPORT_SESSIONS_REPORT_TIMEOUT:3000}"
|
|
json:
|
|
# Cast String data types to Numeric if possible when processing Telemetry/Attributes JSON
|
|
type_cast_enabled: "${JSON_TYPE_CAST_ENABLED:true}"
|
|
# Maximum allowed string value length when processing Telemetry/Attributes JSON (0 value disables string value length check)
|
|
max_string_value_length: "${JSON_MAX_STRING_VALUE_LENGTH:0}"
|
|
log:
|
|
enabled: "${TB_TRANSPORT_LOG_ENABLED:true}"
|
|
max_length: "${TB_TRANSPORT_LOG_MAX_LENGTH:1024}"
|
|
stats:
|
|
enabled: "${TB_TRANSPORT_STATS_ENABLED:true}"
|
|
print-interval-ms: "${TB_TRANSPORT_STATS_PRINT_INTERVAL_MS:60000}"
|
|
client_side_rpc:
|
|
timeout: "${CLIENT_SIDE_RPC_TIMEOUT:60000}"
|
|
rate_limits:
|
|
# Enable or disable generic rate limits. Device and Tenant specific rate limits are controlled in Tenant Profile.
|
|
ip_limits_enabled: "${TB_TRANSPORT_IP_RATE_LIMITS_ENABLED:false}"
|
|
# Maximum number of connect attempts with invalid credentials
|
|
max_wrong_credentials_per_ip: "${TB_TRANSPORT_MAX_WRONG_CREDENTIALS_PER_IP:10}"
|
|
# Timeout to expire block IP addresses
|
|
ip_block_timeout: "${TB_TRANSPORT_IP_BLOCK_TIMEOUT:60000}"
|
|
|
|
|
|
queue:
|
|
type: "${TB_QUEUE_TYPE:kafka}" # kafka (Apache Kafka) or aws-sqs (AWS SQS) or pubsub (PubSub) or service-bus (Azure Service Bus) or rabbitmq (RabbitMQ)
|
|
kafka:
|
|
bootstrap.servers: "${TB_KAFKA_SERVERS:localhost:9092}"
|
|
ssl:
|
|
enabled: "${TB_KAFKA_SSL_ENABLED:false}"
|
|
truststore.location: "${TB_KAFKA_SSL_TRUSTSTORE_LOCATION:}"
|
|
truststore.password: "${TB_KAFKA_SSL_TRUSTSTORE_PASSWORD:}"
|
|
keystore.location: "${TB_KAFKA_SSL_KEYSTORE_LOCATION:}"
|
|
keystore.password: "${TB_KAFKA_SSL_KEYSTORE_PASSWORD:}"
|
|
key.password: "${TB_KAFKA_SSL_KEY_PASSWORD:}"
|
|
acks: "${TB_KAFKA_ACKS:all}"
|
|
retries: "${TB_KAFKA_RETRIES:1}"
|
|
compression.type: "${TB_KAFKA_COMPRESSION_TYPE:none}" # none or gzip
|
|
batch.size: "${TB_KAFKA_BATCH_SIZE:16384}"
|
|
linger.ms: "${TB_KAFKA_LINGER_MS:1}"
|
|
max.request.size: "${TB_KAFKA_MAX_REQUEST_SIZE:1048576}"
|
|
max.in.flight.requests.per.connection: "${TB_KAFKA_MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION:5}"
|
|
buffer.memory: "${TB_BUFFER_MEMORY:33554432}"
|
|
replication_factor: "${TB_QUEUE_KAFKA_REPLICATION_FACTOR:1}"
|
|
max_poll_interval_ms: "${TB_QUEUE_KAFKA_MAX_POLL_INTERVAL_MS:300000}"
|
|
max_poll_records: "${TB_QUEUE_KAFKA_MAX_POLL_RECORDS:8192}"
|
|
max_partition_fetch_bytes: "${TB_QUEUE_KAFKA_MAX_PARTITION_FETCH_BYTES:16777216}"
|
|
fetch_max_bytes: "${TB_QUEUE_KAFKA_FETCH_MAX_BYTES:134217728}"
|
|
request.timeout.ms: "${TB_QUEUE_KAFKA_REQUEST_TIMEOUT_MS:30000}" # (30 seconds) # refer to https://docs.confluent.io/platform/current/installation/configuration/producer-configs.html#producerconfigs_request.timeout.ms
|
|
session.timeout.ms: "${TB_QUEUE_KAFKA_SESSION_TIMEOUT_MS:10000}" # (10 seconds) # refer to https://docs.confluent.io/platform/current/installation/configuration/consumer-configs.html#consumerconfigs_session.timeout.ms
|
|
use_confluent_cloud: "${TB_QUEUE_KAFKA_USE_CONFLUENT_CLOUD:false}"
|
|
confluent:
|
|
ssl.algorithm: "${TB_QUEUE_KAFKA_CONFLUENT_SSL_ALGORITHM:https}"
|
|
sasl.mechanism: "${TB_QUEUE_KAFKA_CONFLUENT_SASL_MECHANISM:PLAIN}"
|
|
sasl.config: "${TB_QUEUE_KAFKA_CONFLUENT_SASL_JAAS_CONFIG:org.apache.kafka.common.security.plain.PlainLoginModule required username=\"CLUSTER_API_KEY\" password=\"CLUSTER_API_SECRET\";}"
|
|
security.protocol: "${TB_QUEUE_KAFKA_CONFLUENT_SECURITY_PROTOCOL:SASL_SSL}"
|
|
other-inline: "${TB_QUEUE_KAFKA_OTHER_PROPERTIES:}" # In this section you can specify custom parameters (semicolon separated) for Kafka consumer/producer/admin # Example "metrics.recording.level:INFO;metrics.sample.window.ms:30000"
|
|
other: # DEPRECATED. In this section you can specify custom parameters for Kafka consumer/producer and expose the env variables to configure outside
|
|
# - key: "request.timeout.ms" # refer to https://docs.confluent.io/platform/current/installation/configuration/producer-configs.html#producerconfigs_request.timeout.ms
|
|
# value: "${TB_QUEUE_KAFKA_REQUEST_TIMEOUT_MS:30000}" # (30 seconds)
|
|
# - key: "session.timeout.ms" # refer to https://docs.confluent.io/platform/current/installation/configuration/consumer-configs.html#consumerconfigs_session.timeout.ms
|
|
# value: "${TB_QUEUE_KAFKA_SESSION_TIMEOUT_MS:10000}" # (10 seconds)
|
|
topic-properties:
|
|
rule-engine: "${TB_QUEUE_KAFKA_RE_TOPIC_PROPERTIES:retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;min.insync.replicas:1}"
|
|
core: "${TB_QUEUE_KAFKA_CORE_TOPIC_PROPERTIES:retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;min.insync.replicas:1}"
|
|
transport-api: "${TB_QUEUE_KAFKA_TA_TOPIC_PROPERTIES:retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:10;min.insync.replicas:1}"
|
|
notifications: "${TB_QUEUE_KAFKA_NOTIFICATIONS_TOPIC_PROPERTIES:retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;min.insync.replicas:1}"
|
|
aws_sqs:
|
|
use_default_credential_provider_chain: "${TB_QUEUE_AWS_SQS_USE_DEFAULT_CREDENTIAL_PROVIDER_CHAIN:false}"
|
|
access_key_id: "${TB_QUEUE_AWS_SQS_ACCESS_KEY_ID:YOUR_KEY}"
|
|
secret_access_key: "${TB_QUEUE_AWS_SQS_SECRET_ACCESS_KEY:YOUR_SECRET}"
|
|
region: "${TB_QUEUE_AWS_SQS_REGION:YOUR_REGION}"
|
|
threads_per_topic: "${TB_QUEUE_AWS_SQS_THREADS_PER_TOPIC:1}"
|
|
queue-properties:
|
|
rule-engine: "${TB_QUEUE_AWS_SQS_RE_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}"
|
|
core: "${TB_QUEUE_AWS_SQS_CORE_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}"
|
|
transport-api: "${TB_QUEUE_AWS_SQS_TA_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}"
|
|
notifications: "${TB_QUEUE_AWS_SQS_NOTIFICATIONS_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}"
|
|
# VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds
|
|
pubsub:
|
|
project_id: "${TB_QUEUE_PUBSUB_PROJECT_ID:YOUR_PROJECT_ID}"
|
|
service_account: "${TB_QUEUE_PUBSUB_SERVICE_ACCOUNT:YOUR_SERVICE_ACCOUNT}"
|
|
max_msg_size: "${TB_QUEUE_PUBSUB_MAX_MSG_SIZE:1048576}" #in bytes
|
|
max_messages: "${TB_QUEUE_PUBSUB_MAX_MESSAGES:1000}"
|
|
queue-properties:
|
|
rule-engine: "${TB_QUEUE_PUBSUB_RE_QUEUE_PROPERTIES:ackDeadlineInSec:30;messageRetentionInSec:604800}"
|
|
core: "${TB_QUEUE_PUBSUB_CORE_QUEUE_PROPERTIES:ackDeadlineInSec:30;messageRetentionInSec:604800}"
|
|
transport-api: "${TB_QUEUE_PUBSUB_TA_QUEUE_PROPERTIES:ackDeadlineInSec:30;messageRetentionInSec:604800}"
|
|
notifications: "${TB_QUEUE_PUBSUB_NOTIFICATIONS_QUEUE_PROPERTIES:ackDeadlineInSec:30;messageRetentionInSec:604800}"
|
|
service_bus:
|
|
namespace_name: "${TB_QUEUE_SERVICE_BUS_NAMESPACE_NAME:YOUR_NAMESPACE_NAME}"
|
|
sas_key_name: "${TB_QUEUE_SERVICE_BUS_SAS_KEY_NAME:YOUR_SAS_KEY_NAME}"
|
|
sas_key: "${TB_QUEUE_SERVICE_BUS_SAS_KEY:YOUR_SAS_KEY}"
|
|
max_messages: "${TB_QUEUE_SERVICE_BUS_MAX_MESSAGES:1000}"
|
|
queue-properties:
|
|
rule-engine: "${TB_QUEUE_SERVICE_BUS_RE_QUEUE_PROPERTIES:lockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800}"
|
|
core: "${TB_QUEUE_SERVICE_BUS_CORE_QUEUE_PROPERTIES:lockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800}"
|
|
transport-api: "${TB_QUEUE_SERVICE_BUS_TA_QUEUE_PROPERTIES:lockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800}"
|
|
notifications: "${TB_QUEUE_SERVICE_BUS_NOTIFICATIONS_QUEUE_PROPERTIES:lockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800}"
|
|
rabbitmq:
|
|
exchange_name: "${TB_QUEUE_RABBIT_MQ_EXCHANGE_NAME:}"
|
|
host: "${TB_QUEUE_RABBIT_MQ_HOST:localhost}"
|
|
port: "${TB_QUEUE_RABBIT_MQ_PORT:5672}"
|
|
virtual_host: "${TB_QUEUE_RABBIT_MQ_VIRTUAL_HOST:/}"
|
|
username: "${TB_QUEUE_RABBIT_MQ_USERNAME:YOUR_USERNAME}"
|
|
password: "${TB_QUEUE_RABBIT_MQ_PASSWORD:YOUR_PASSWORD}"
|
|
automatic_recovery_enabled: "${TB_QUEUE_RABBIT_MQ_AUTOMATIC_RECOVERY_ENABLED:false}"
|
|
connection_timeout: "${TB_QUEUE_RABBIT_MQ_CONNECTION_TIMEOUT:60000}"
|
|
handshake_timeout: "${TB_QUEUE_RABBIT_MQ_HANDSHAKE_TIMEOUT:10000}"
|
|
queue-properties:
|
|
rule-engine: "${TB_QUEUE_RABBIT_MQ_RE_QUEUE_PROPERTIES:x-max-length-bytes:1048576000;x-message-ttl:604800000}"
|
|
core: "${TB_QUEUE_RABBIT_MQ_CORE_QUEUE_PROPERTIES:x-max-length-bytes:1048576000;x-message-ttl:604800000}"
|
|
transport-api: "${TB_QUEUE_RABBIT_MQ_TA_QUEUE_PROPERTIES:x-max-length-bytes:1048576000;x-message-ttl:604800000}"
|
|
notifications: "${TB_QUEUE_RABBIT_MQ_NOTIFICATIONS_QUEUE_PROPERTIES:x-max-length-bytes:1048576000;x-message-ttl:604800000}"
|
|
partitions:
|
|
hash_function_name: "${TB_QUEUE_PARTITIONS_HASH_FUNCTION_NAME:murmur3_128}"
|
|
transport_api:
|
|
requests_topic: "${TB_QUEUE_TRANSPORT_API_REQUEST_TOPIC:tb_transport.api.requests}"
|
|
responses_topic: "${TB_QUEUE_TRANSPORT_API_RESPONSE_TOPIC:tb_transport.api.responses}"
|
|
max_pending_requests: "${TB_QUEUE_TRANSPORT_MAX_PENDING_REQUESTS:10000}"
|
|
max_requests_timeout: "${TB_QUEUE_TRANSPORT_MAX_REQUEST_TIMEOUT:10000}"
|
|
max_callback_threads: "${TB_QUEUE_TRANSPORT_MAX_CALLBACK_THREADS:100}"
|
|
request_poll_interval: "${TB_QUEUE_TRANSPORT_REQUEST_POLL_INTERVAL_MS:25}"
|
|
response_poll_interval: "${TB_QUEUE_TRANSPORT_RESPONSE_POLL_INTERVAL_MS:25}"
|
|
core:
|
|
topic: "${TB_QUEUE_CORE_TOPIC:tb_core}"
|
|
poll-interval: "${TB_QUEUE_CORE_POLL_INTERVAL_MS:25}"
|
|
partitions: "${TB_QUEUE_CORE_PARTITIONS:10}"
|
|
pack-processing-timeout: "${TB_QUEUE_CORE_PACK_PROCESSING_TIMEOUT_MS:60000}"
|
|
usage-stats-topic: "${TB_QUEUE_US_TOPIC:tb_usage_stats}"
|
|
stats:
|
|
enabled: "${TB_QUEUE_CORE_STATS_ENABLED:false}"
|
|
print-interval-ms: "${TB_QUEUE_CORE_STATS_PRINT_INTERVAL_MS:10000}"
|
|
js:
|
|
# JS Eval request topic
|
|
request_topic: "${REMOTE_JS_EVAL_REQUEST_TOPIC:js_eval.requests}"
|
|
# JS Eval responses topic prefix that is combined with node id
|
|
response_topic_prefix: "${REMOTE_JS_EVAL_RESPONSE_TOPIC:js_eval.responses}"
|
|
# JS Eval max pending requests
|
|
max_pending_requests: "${REMOTE_JS_MAX_PENDING_REQUESTS:10000}"
|
|
# JS Eval max request timeout
|
|
max_requests_timeout: "${REMOTE_JS_MAX_REQUEST_TIMEOUT:10000}"
|
|
# JS response poll interval
|
|
response_poll_interval: "${REMOTE_JS_RESPONSE_POLL_INTERVAL_MS:25}"
|
|
rule-engine:
|
|
topic: "${TB_QUEUE_RULE_ENGINE_TOPIC:tb_rule_engine}"
|
|
poll-interval: "${TB_QUEUE_RULE_ENGINE_POLL_INTERVAL_MS:25}"
|
|
pack-processing-timeout: "${TB_QUEUE_RULE_ENGINE_PACK_PROCESSING_TIMEOUT_MS:60000}"
|
|
stats:
|
|
enabled: "${TB_QUEUE_RULE_ENGINE_STATS_ENABLED:true}"
|
|
print-interval-ms: "${TB_QUEUE_RULE_ENGINE_STATS_PRINT_INTERVAL_MS:60000}"
|
|
transport:
|
|
# For high priority notifications that require minimum latency and processing time
|
|
notifications_topic: "${TB_QUEUE_TRANSPORT_NOTIFICATIONS_TOPIC:tb_transport.notifications}"
|
|
poll_interval: "${TB_QUEUE_TRANSPORT_NOTIFICATIONS_POLL_INTERVAL_MS:25}"
|
|
|
|
service:
|
|
type: "${TB_SERVICE_TYPE:tb-transport}"
|
|
# Unique id for this service (autogenerated if empty)
|
|
id: "${TB_SERVICE_ID:}"
|
|
|
|
# Usage statistics parameters
|
|
usage:
|
|
stats:
|
|
report:
|
|
enabled: "${USAGE_STATS_REPORT_ENABLED:true}"
|
|
enabled_per_customer: "${USAGE_STATS_REPORT_PER_CUSTOMER_ENABLED:false}"
|
|
interval: "${USAGE_STATS_REPORT_INTERVAL:10}"
|
|
|
|
metrics:
|
|
# Enable/disable actuator metrics.
|
|
enabled: "${METRICS_ENABLED:false}"
|
|
|
|
management:
|
|
endpoints:
|
|
web:
|
|
exposure:
|
|
# Expose metrics endpoint (use value 'prometheus' to enable prometheus metrics).
|
|
include: '${METRICS_ENDPOINTS_EXPOSE:info}'
|
|
|
|
notification_system:
|
|
rules:
|
|
# Semicolon-separated deduplication durations (in millis) for trigger types. Format: 'NotificationRuleTriggerType1:123;NotificationRuleTriggerType2:456'
|
|
deduplication_durations: "${TB_NOTIFICATION_RULES_DEDUPLICATION_DURATIONS:RATE_LIMITS:14400000;}"
|