-
Notifications
You must be signed in to change notification settings - Fork 6
0.Configuration
xukeawsl edited this page Oct 6, 2024
·
7 revisions
整个 mqtt-server
的配置都包含在项目目录下的 config.yml
中, 默认的配置项如下:
# SSL/TLS 全局配置, 构建启用 MQ_WITH_TLS 时读取
# 在 listeners 中可以使用特定的配置, 未配置则使用全局配置
ssl:
# TLS 协议版本, 仅支持 tls1.2 和 tls1.3 (默认 tls1.2)
version: 'tls1.2'
# CA 证书, 双向认证时用于验证客户端证书, 单向认证可不配置
#cacertfile: '../certs/ca.crt'
# 服务器证书
certfile: '../certs/server.crt'
# 服务器私钥
keyfile: '../certs/server.key'
# 服务器私钥受密码保护时需要提供密码
# password: 'MQTT'
# 认证模式, 支持单向认证 verify_none 和 双向认证 verify_peer
# 默认认证模式为单向认证
verify_mode: 'verify_none'
# 客户端没有证书时, 是否拒绝 SSL/TLS 连接 (默认 false)
# 只有开启双向认证时有效, 为 true 表示强制双向认证
fail_if_no_peer_cert: false
# 增强 SSL/TLS 连接的安全性, 可以使用 Diffie-Hellman 密钥交换算法(DH)
# 来生成参数 (默认不使用)
# dhparam: '../certs/dh4096.pem'
listeners:
# 非加密 tcp 连接
- address: 'mqtt://0.0.0.0'
port: 1883
# 加密 tcp 连接, 未配置专门的证书时取全局配置
- address: 'mqtts://0.0.0.0'
port: 8883
certfile: ''
keyfile: ''
# 非加密 websocket 连接
- address: 'ws://0.0.0.0'
port: 8083
# 加密 websocket 连接, 配置一个指定的 TLS 版本
- address: 'wss://0.0.0.0'
port: 8084
version: 'tls1.3'
# MQTT Server 相关配置
server:
protocol:
# CONNECT 阶段的超时时间, 考虑到网络延时实际程序中设置的超时
# 时间为其 1.5 倍 (默认 10 秒, 为 0 表示不设置超时)
connect_timeout: 10
# 检查会话超时的间隔 (默认 1 秒)
check_timeout_duration: 1
# 检查需要重发的报文或过期等待报文的间隔 (默认 1 秒)
check_waiting_map_duration: 1
# 最大重发次数 (默认 3 次)
max_resend_count: 3
# 每一次重发的时间间隔 (默认 60 秒)
resend_duration: 60
# 等待响应的最大时间 (默认 60 秒)
max_waiting_time: 60
# 是否开启用户名/密码认证 (默认关闭)
auth: false
# 用户名/密码对, 只有 auth 开启程序才会读取
# 用户名不可重复, 重复了后面的会覆盖前面的
credentials:
- username: 'key1'
password: 'value1'
- username: 'key2'
password: 'value2'
# 用户名密码可以为空字符串
# - username: ''
# password: ''
# 是否开启 ACL 认证, 只有 auth 开启时才会读取
acl:
enable: false
# ACL 规则文件, 使用 yml 文件配置
acl_file: '../acl_rules.yml'
# 当进行 ACL 检查时, 从上到下一次匹配规则, 直到匹配到一个允许或拒绝时停止
# 如果都没有匹配到, 根据此默认项设置是允许还是拒绝
default: 'deny'
# 自动订阅列表, 订阅行为不受 ACL 控制
# auto_subscribe_list:
# - topic: 'auto/topic0'
# qos: 0
# - topic: 'auto/topic1'
# qos: 1
# - topic: 'auto/topic2'
# qos: 2
# 资源限制相关配置
limits:
# 发布消息的最大大小, 协议本身最大支持 256MB, 因此配置超过这个值的大小无效
# 支持使用后缀单位 KB 和 MB, 配置为空或者不配置也表示不限制
# max_packet_size: '10MB'
# 每个客户端的最大订阅主题数, 默认不限制
# max_subscriptions: 100
# 订阅速率限制, 支持突发流量, req_per_second 设置每秒处理的请求数, 支持小数, 不配置则不限速
# brust 设置突发请求数, 当值大于 req_per_second 时才有效, 支持小数, 如果不配置则与 req_per_second 相同
# sub_rate_limit:
# req_per_second: 0.1
# brust: 1
# 发布速率限制, 参数含义同上, 注意如果请求被限流会延迟处理, 且等待延迟处理的这段时间无法
# 立即处理新的请求, 而是排队等待处理, 不过消息转发还是可以正常进行
# pub_rate_limit:
# req_per_second: 1
# brust: 3
# 日志相关配置
log:
# 日志文件名 (默认 mqtt-server.log)
name: 'logs/mqtt-server.log'
# 滚动日志单个日志的最大字节数 (默认 1MB = 1048576 B)
max_rotate_size: 1048576
# 滚动日志最大数量 (默认 10 个)
max_rotate_count: 10
# 日志线程池队列大小 (默认 8192)
thread_pool_qsize: 8192
# 日志线程池线程数 (默认 1 个日志线程)
thread_count: 1
相关配置项的说明已经通过注释进行了介绍, 当未开启 SSL/TLS 时, ssl 相关的监听配置是无效的, 如果开启了 SSL/TLS, 则支持监听 SSL/TLS 指定的端口, 可以配置多个监听端口, 所有监听端口都是共享内存中的消息的, 非加密连接的客户端也能够收到加密连接的客户端发布消息, 如果配置项中存在配置有误的地方, 则 mqtt-server
运行后会立即停止, 你可以根据日志中的提示信息来查看是哪个配置项有误