Appearance
配置
FreeMQTT 服务器端通过 ./freemqttd/config.toml 文件进行配置。TOML格式的配置文件简单易懂,只需用简单的文本编辑器就可更改。
默认配置
toml
[freemqtt]
# 通用配置
[freemqtt.common]
# 用于生成客户端的 token 和 MQTT 客户端连接鉴权用的秘钥
# 必须为64位十六进制字符串(二进制256位秘钥)
# 一定要注意保管,避免向外泄漏
secret = "F593BDE387F7530CF0F35CC2DB763F755AB770E779C0FD0C3AB018E7439E2A3D"
# 最大topic & topic filter 级别,默认4
maximum_topic_level = 4
# 发布 FreeMQTT 统计信息间隔
pub_sys_stat_interval = 300 # in seconds
# 监听 1883 端口及ip地址
[freemqtt.tcp]
address = "0.0.0.0"
port = 1883
# 监听 8883 (TLS/SSL) 端口及ip地址, 如要禁止,请在每行前加 # 字符注释掉
[freemqtt.ssl]
address = "0.0.0.0"
port = 8883
ssl_certificate = "./ssl/freemqtt.net.crt"
ssl_certificate_key = "./ssl/freemqtt.net.key"
# 监听 8080 (websocket) 端口及ip地址, 如要禁止,请在每行前加 # 字符注释掉
[freemqtt.ws]
address = "0.0.0.0"
port = 8080
# 监听 8443 (websocket over TLS/SSL) 端口及ip地址, 如要禁止,请在每行前加 # 字符注释掉
[freemqtt.wss]
address = "0.0.0.0"
port = 8443
ssl_certificate = "./ssl/freemqtt.net.crt"
ssl_certificate_key = "./ssl/freemqtt.net.key"
# 9080 (web) 这是freemqttctl 管理工具需要管理用的web api 端口, 一定要保留!
[freemqtt.monitor]
address = "localhost"
port = 9080
# 日志文件的未知及每个文件的大小,共10个log 文件进行循环保存 freemqtt.log.1 freemqtt.log.2 freemqtt.log.3 ... freemqtt.log.10
[freemqtt.log]
path = "log/freemqtt.log"
maxim_size = 10485760 # 10M
log_level = "debug"
# MQTT 5.0 属性配置
[freemqtt.properties]
session_expiry_interval = 7200 # in second
message_expiry_interval = 7200 # in second
receive_maximum = 64
maximum_packet_size = 2097152 # 2*1024*1024 = 2M bytes
maximum_qos = 2
retain_available = true
topic_alias_maximum = 64
wildcard_subscription_available = true
subscription_identifiers_available = true
shared_subscription_available = true
server_keep_alive = 60 # in second
response_information = "Welcome to FreeMQTT Broker."
[freemqtt.common]
secret
- secret 是FreeMQTT服务端鉴权秘钥
- 客户的 token 也是基于这个 secret 签字的
- 一定要注意保密
- 在生产环境,建议不要使用默认的值
下面是一个在 Python 交互环境下生成 secret 的例子:
python
>>> import uuid
>>> secret = uuid.uuid4().hex.upper() + uuid.uuid4().hex.upper()
>>> print (secret)
>>> '2612311B16A1436492DE219C9848E603654FFECA18EC4498B313C766B3333C43'
maximum_topic_level
- maximum_topic_level: FreeMQTT 允许的最大Topic 或 Topic Filter 级数,默认值 4。
- maximum_topic_level = 4 时, topic: a, a/b, a/b/c, a/b/c/d 都是有效的 topic, 而 a/b/c/d/f 则无效(5级)
- 你可以根据实际需要更改这项配置,其值必须为小于或等于10的正整数。
pub_sys_stat_interval
- pub_sys_stat_interval: FreeMQTT 发布统计信息的时间间隔,以秒为单位
- 默认值 300
- FreeMQTT 每隔这个时间间隔向主题 $SYS/METRICS 发布一次统计信息
统计信息JSON格式样例:
json
{
"appid": "myapp003",
"client_count": 1023,
"received_message_count": 1805,
"sent_message_count": 2303,
"retain_message_count": 0,
"normal_sub_count": 123,
"share_sub_count": 0,
"uptime": 6005,
"timestamp": 1726732972
}
上面的 JSON 数据含义如下
appid: 当前的Application ID
client_count: 在线的 MQTT 客户数
received_message_count: 收到的消息数
sent_message_count: 发出的消息数
retain_message_count: 当前 retain 消息数
normal_sub_count: 常规订阅 Topic Filter 数
share_sub_count: 共享订阅数
uptime: 服务连续运行时间(秒)
timestamp: 本次统计发布的时间戳
[freemqtt.tcp]
- address:监听的 TCP IP 地址,默认 "0.0.0.0", 如果只允许本机访问可设为 "localhost"
- port:监听的 TCP 端口, 默认值 1883
[freemqtt.ssl]
- address: 监听的 TCP IP 地址,默认 "0.0.0.0", 如果只允许本机访问可设为 "localhost"
- port: 监听的 TCP 端口, 默认值 8883
- ssl_certificate:TLS/SSL 证书路径,默认 "./ssl/freemqtt.net.crt"
- ssl_certificate_key:TLS/SSL 私钥路径,默认 "./ssl/freemqtt.net.key"
[freemqtt.ws]
- address: 监听的 TCP IP 地址,默认 "0.0.0.0", 如果只允许本机访问可设为 "localhost"
- port: 监听的 TCP 端口, 默认值 8080
[freemqtt.wss]
- address: 监听的 TCP IP 地址,默认 "0.0.0.0", 如果只允许本机访问可设为 "localhost"
- port: 监听的 TCP 端口, 默认值 8443
- ssl_certificate:TLS/SSL 证书路径,默认 "./ssl/freemqtt.net.crt"
- ssl_certificate_key:TLS/SSL 私钥路径,默认 "./ssl/freemqtt.net.key"
[freemqtt.monitor]
- 这小节配置项是管理 FreeMQTT 后台进程专用
- freemqttctl 命令使用此小节配置
- 如无特殊情况,请不要更改
- address: 监听的 TCP IP 地址,默认 "localhost"
- port: 监听的 TCP 端口, 默认值 9080
[freemqtt.log]
- 这小节是FreeMQTT log file 配置项
- 如无特殊情况,请不要更改
- path: log文件路径,默认当前路径下 log/freemqtt.log
- maxim_size:log 文件最大容量值 ,默认 10485760,即 10M Bytes
- log_level 可取值: debug | info | warning | error | critical
- log_level:log 级别,默认 debug
- log 级别大小关系: debug < info < warning < error < critical
- log 文件是循环滚动保存: freemqtt.log, freemqtt.log.1, freemqtt.log.2, ... freemqtt.log.10
[freemqtt.properties]
- 这小节是服务端相应的属性设置,是 MQTT 5.0 才有的属性
- 具体定义请参照 OASIS 官网的文档
- session_expiry_interval:MQTT 会话过期间隔,默认值: 7200 秒(2小时)
- message_expiry_interval:消息过期间隔,默认值:7200 秒(2小时)
- receive_maximum:服务器端可以接受每个 MQTT 客户的 QoS1 和 QoS2 最大并发Publish 消息数, 默认值:64
- maximum_packet_size:服务器端可以接受最大 MQTT Packet 大小, 默认 2097152(2M bytes)
- maximum_qos:服务器端接受的最大 QoS 数,默认 2
- retain_available:retain 消息是否支持,默认 true(支持)
- topic_alias_maximum:每个客户端可用最多 Topic 别名数,默认 64
- wildcard_subscription_available:是否允许通配符的 Topic Filter (例如 a/b/+/c/#),默认值: true
- subscription_identifiers_available:是否允许订阅标识,默认值:true
- shared_subscription_available:是否允许共享订阅,默认值:true
- server_keep_alive: 服务端缺省 keep alive interval, 默认 60 秒
- response_information:连接成功时 CONNACK 返回携带的属性,默认值: "Welcome to FreeMQTT Broker."