Skip to content

EMQX 集成说明

liuyc edited this page Jul 11, 2023 · 11 revisions

使用 tio 时除了可以使用内置的 MQTT Broker,也可以集成 EMQX,以下是集成的说明。

配置认证(必要的)

服务侧认证

为了后端服务(tio、上层业务系统对接 EMQX)的集成, 在 EMQX 的 web 后台中“访问控制--客户端认证” 增加内置数据库认证,添加认证用户名和密码。 image.png 如上图所示:创建内置数据库方式的认证

image.png

在用户管理,为需要连接 EMQX 的后端服务创建用户名和密码:

  • 用户名需要以 $ 开头,以便 tio 和设备客户端区分
  • 勾选为 “超级用户”,以便服务端可使用所有 topic

示例中:

  • $tio用户必须创建,密码与 tio config.yaml 中保持一致,以便 tio 与 EMQX 的集成
  • $business 是你需要连接EMQX的上层业务系统的用户示例(可以修改成你想要的用户名保证 $ 开头即可),以获得 设备上下线设备上报指标 等等消息。

设备侧认证

设备的客户端认证采用集成 tio 的 MySQL 查询的方式。
在 EMQX 的web 后台 “访问控制--客户端认证” 增加 MySQL 认证,如下图配置。

其中的 SQL 为

SELECT auth_value as password_hash FROM thing where id = ${username} LIMIT 1

image.png

保留消息设置(可选的)

为了防止EMQX所在的服务器异常重启导致消息丢失,推荐 存储方式选用 disc image.png

消息队列最大长度(可选的)

为了应对突发大量消息 和 消费端短时间离线或重启的等情况,需要 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 的配置。