Skip to content

MQTT 配置说明

本文档描述 RobustMQ MQTT 协议的所有配置项。全局/基础配置请参考 Broker 配置说明;其他协议配置见 Kafka 配置AMQP 配置NATS 配置

概述

所有 MQTT 相关配置都汇总在 TOML 的 [mqtt_runtime] 表下(对应 Rust 侧的 MqttRuntime struct,与 [kafka_runtime] 是同一种组织方式),本文档按子表逐一说明。环境变量覆盖规则与 Broker 配置说明 一致,例如:

bash
export ROBUST_MQ_SERVER_MQTT_RUNTIME_SERVER_TCP_PORT=1883

[mqtt_runtime] 表本身还直接挂着一个顶层字段(不属于任何子表):

toml
[mqtt_runtime]
broker_worker_threads = 0  # 0 = 自动:CPU 核数
配置项类型默认值说明
broker_worker_threadsusize0(自动)broker-runtime(MQTT 连接处理、消息投递热路径)工作线程数,0 = 自动取 CPU 核数

1. MQTT 服务器配置

[mqtt_runtime.server]

MQTT 协议监听端口配置。

toml
[mqtt_runtime.server]
tcp_port = 1883
tls_port = 1885
websocket_port = 8083
websockets_port = 8085
quic_port = 9083
配置项类型默认值说明
tcp_portu321883MQTT over TCP 端口
tls_portu321885MQTT over TLS 端口
websocket_portu328083MQTT over WebSocket 端口
websockets_portu328085MQTT over WebSocket Secure 端口
quic_portu329083MQTT over QUIC 端口

2. MQTT 认证与运行时配置

[mqtt_runtime.auth]

toml
[mqtt_runtime.auth]
default_user = "admin"
default_password = "robustmq"
durable_sessions_enable = false
secret_free_login = false
is_self_protection_status = false
配置项类型默认值说明
default_userstring"admin"系统默认用户名
default_passwordstring"robustmq"系统默认密码
durable_sessions_enableboolfalse是否启用持久会话(false 为临时会话,性能更好)
secret_free_loginboolfalse是否允许免密登录
is_self_protection_statusboolfalse是否处于自我保护状态(连接过载时拒绝新连接)

MQTT 的网络线程复用统一的 [broker_network] 配置(见 Broker 配置说明),不再有独立的 [mqtt_runtime.auth.network]


3. MQTT Keep Alive 配置

[mqtt_runtime.keep_alive]

toml
[mqtt_runtime.keep_alive]
enable = true
default_time = 180
max_time = 3600
default_timeout = 2
配置项类型默认值说明
enablebooltrue是否启用 Keep Alive 心跳检测
default_timeu16180默认心跳间隔(秒)
max_timeu163600最大心跳间隔(秒)
default_timeoutu162连续超时次数后断开连接

4. MQTT 协议配置

[mqtt_runtime.protocol]

toml
[mqtt_runtime.protocol]
max_session_expiry_interval = 1800
default_session_expiry_interval = 30
topic_alias_max = 65535
max_packet_size = 10485760
receive_max = 65535
max_message_expiry_interval = 3600
client_pkid_persistent = false
配置项类型默认值说明
max_session_expiry_intervalu321800会话最大过期时间(秒)
default_session_expiry_intervalu3230会话默认过期时间(秒)
topic_alias_maxu1665535主题别名最大数量
max_packet_sizeu3210485760 (10 MB)单个 MQTT 数据包最大大小(字节)
receive_maxu1665535未确认的 PUBLISH 数据包最大数量
max_message_expiry_intervalu643600消息最大过期时间(秒)
client_pkid_persistentboolfalse是否持久化客户端 Packet ID

5. MQTT 限流配置

[mqtt_runtime.limit]

集群和租户级别的连接/流量限流配置。

toml
[mqtt_runtime.limit.cluster]
max_connections_per_node = 10000000
max_connection_rate = 100000
max_topics = 5000000
max_sessions = 50000000
max_publish_rate = 10000

[mqtt_runtime.limit.tenant]
max_connections_per_node = 1000000
max_connection_rate = 10000
max_topics = 500000
max_sessions = 5000000
max_publish_rate = 10000
配置项类型说明
max_connections_per_nodeu64每节点最大连接数
max_connection_rateu32每秒最大新建连接速率
max_topicsu64最大 Topic 数量
max_sessionsu64最大 Session 数量
max_publish_rateu32每秒最大 Publish 消息速率

6. MQTT 离线消息配置

[mqtt_runtime.offline_message]

客户端离线期间的消息存储配置。

toml
[mqtt_runtime.offline_message]
enable = true
expire_ms = 0
max_messages_num = 0
配置项类型默认值说明
enablebooltrue是否启用离线消息
expire_msu320离线消息过期时间(毫秒),0 表示不过期
max_messages_numu320每个客户端最大离线消息数,0 表示无限制

7. MQTT 连接抖动检测配置

[mqtt_runtime.flapping_detect]

检测客户端频繁连接/断开(抖动)并自动封禁。

toml
[mqtt_runtime.flapping_detect]
enable = false
window_time = 1
max_client_connections = 15
ban_time = 5
配置项类型默认值说明
enableboolfalse是否启用连接抖动检测
window_timeu321检测时间窗口(秒)
max_client_connectionsu6415时间窗口内最大连接次数
ban_timeu325触发抖动后封禁时间(秒)

8. MQTT 慢订阅检测配置

[mqtt_runtime.slow_subscribe]

慢订阅监控配置,用于检测消息分发延迟。

toml
[mqtt_runtime.slow_subscribe]
enable = false
record_time = 1000
delay_type = "Whole"
配置项类型默认值说明
enableboolfalse是否启用慢订阅检测
record_timeu641000慢订阅记录阈值(毫秒)
delay_typestring"Whole"延迟计算类型:Whole(全链路)、Partial(部分)

9. MQTT Schema 验证配置

[mqtt_runtime.schema]

消息 Schema 验证配置。

toml
[mqtt_runtime.schema]
enable = true
strategy = "ALL"
failed_operation = "Discard"
echo_log = true
log_level = "info"
配置项类型默认值说明
enablebooltrue是否启用 Schema 验证
strategystring"ALL"验证策略
failed_operationstring"Discard"验证失败时的操作
echo_logbooltrue是否输出 Schema 验证日志
log_levelstring"info"Schema 验证日志级别

验证策略(strategy):

  • ALL:消息必须通过所有绑定的 Schema 验证
  • Any:消息只需通过任一 Schema 验证

失败操作(failed_operation):

  • Discard:丢弃验证失败的消息
  • DisconnectAndDiscard:断开连接并丢弃消息
  • Ignore:忽略验证失败,继续处理

10. MQTT 系统监控配置

[mqtt_runtime.system_monitor]

系统资源监控配置。

toml
[mqtt_runtime.system_monitor]
enable = false
os_cpu_high_watermark = 70.0
os_memory_high_watermark = 80.0
system_topic_interval_ms = 60000
配置项类型默认值说明
enableboolfalse是否启用系统资源监控
os_cpu_high_watermarkf3270.0CPU 使用率高水位线(%)
os_memory_high_watermarkf3280.0内存使用率高水位线(%)
system_topic_interval_msu6460000系统 Topic 指标发布间隔(毫秒)

完整示例

toml
[mqtt_runtime]
broker_worker_threads = 0

[mqtt_runtime.server]
tcp_port = 1883
tls_port = 1885
websocket_port = 8083
websockets_port = 8085
quic_port = 9083

[mqtt_runtime.auth]
default_user = "admin"
default_password = "your_secure_password"
durable_sessions_enable = false
secret_free_login = false
is_self_protection_status = false

[mqtt_runtime.keep_alive]
enable = true
default_time = 180
max_time = 3600
default_timeout = 2

[mqtt_runtime.protocol]
max_session_expiry_interval = 1800
default_session_expiry_interval = 30
topic_alias_max = 65535
max_packet_size = 10485760
receive_max = 65535
max_message_expiry_interval = 3600
client_pkid_persistent = false

[mqtt_runtime.offline_message]
enable = true
expire_ms = 0
max_messages_num = 0

[mqtt_runtime.flapping_detect]
enable = false
window_time = 1
max_client_connections = 15
ban_time = 5

[mqtt_runtime.slow_subscribe]
enable = false
record_time = 1000
delay_type = "Whole"

[mqtt_runtime.schema]
enable = true
strategy = "ALL"
failed_operation = "Discard"
echo_log = true
log_level = "info"

[mqtt_runtime.system_monitor]
enable = false
os_cpu_high_watermark = 70.0
os_memory_high_watermark = 80.0
system_topic_interval_ms = 60000

延伸阅读

🎉 既然都登录了 GitHub,不如顺手给我们点个 Star 吧!⭐ 你的支持是我们最大的动力 🚀