-
Notifications
You must be signed in to change notification settings - Fork 3
EMQX 集成说明
liuyc edited this page Jul 11, 2023
·
11 revisions
使用 tio 时除了可以使用内置的 MQTT Broker,也可以集成 EMQX,以下是集成的说明。
为了后端服务(tio、上层业务系统对接 EMQX)的集成, 在 EMQX 的 web 后台中“访问控制--客户端认证” 增加内置数据库认证,添加认证用户名和密码。 如上图所示:创建内置数据库方式的认证
在用户管理,为需要连接 EMQX 的后端服务创建用户名和密码:
- 用户名需要以
$
开头,以便 tio 和设备客户端区分 - 勾选为 “超级用户”,以便服务端可使用所有 topic
示例中:
-
$tio
用户必须创建,密码与 tioconfig.yaml
中保持一致,以便 tio 与 EMQX 的集成 -
$business
是你需要连接EMQX的上层业务系统的用户示例(可以修改成你想要的用户名保证$
开头即可),以获得设备上下线
,设备上报指标
等等消息。
设备的客户端认证采用集成 tio 的 MySQL 查询的方式。
在 EMQX 的web 后台 “访问控制--客户端认证” 增加 MySQL 认证,如下图配置。
其中的 SQL 为
SELECT auth_value as password_hash FROM thing where id = ${username} LIMIT 1
为了防止EMQX所在的服务器异常重启导致消息丢失,推荐 存储方式选用 disc
为了应对突发大量消息 和 消费端短时间离线或重启的等情况,需要 EMQX 能够缓存足够的消息
-
mqtt.max_mqueue_len
: 参考文档 emqx web 后台 “功能配置--MQTT--会话--最大消息队列长度” 设置为 100000![image.png](https://cdn.nlark.com/yuque/0/2023/png/535760/1676799294710-064e4eab-af58-4c51-9f7f-2507a9233fdd.png#averageHue=%231e242b&clientId=u8996f713-bb09-4&from=paste&height=210&id=oNZNd&originHeight=1136&originWidth=2246&originalType=binary&ratio=2&rotation=0&showTitle=false&size=243796&status=done&style=none&taskId=u5dced2f6-686b-4df3-95ec-298ce969c43&title=&width=416)
-
force_shutdown.max_message_queue_len
: 参考文档 emqx web 后台无法配置,需要修改 /etc/emqx.conf ( 参照 /etc/emqx-example.conf )。同时根据需要修改 max_heap_size
## @path force_shutdown
force_shutdown {
## @doc Enable `force_shutdown` feature.
## @path force_shutdown.enable
## @type boolean()
## @default true
enable=true
## @doc Maximum message queue length.
## @path force_shutdown.max_message_queue_len
## @type 0..inf
## @default 1000
max_message_queue_len=100000
## @doc Total heap size
## @path force_shutdown.max_heap_size
## @type emqx_schema:wordsize()
## @default 32MB
max_heap_size=64MB
}
需要额外注意的是,如果 eqmx 已经运行过, 直接修改 emqx.conf 改完不生效,要看看 cluster-override.conf 一并修改 参考文档,因其会优先覆盖 emqx.conf 的配置。