容器安装emqx
安装
- 设置镜像名
emqx/emqx:5.3.1
- 配置nodePort端口映射:mqtt客户端连接端口
1883
、emqx管理界面端口18083
- 设置挂载(可选):挂载目录
/opt/emqx/data
和/opt/emqx/log
- 访问emqx管理界面
<IP>:18083
,默认用户名admin,密码public - 安装MQTTX客户端,输入HOST:mqtt://
、Port:18083,其他信息随便输入,点击连接即可
使用场景
监听mq客户端连接或离线的状态(规则引擎)
登录emqx管理界面
点击
Rules->Create
在
SQL Editor
输入1
2
3
4
5SELECT
*
FROM
"$events/client_disconnected", #设备断开事件
"$events/client_connected" #设备连接事件(如果不需要连接事件,可删)在左侧点击
Actions->Add Action
在Action选择
Republish
(转发消息),输入topic的名字,例如exxk/status/client
,其他默认即可,Payload
设置为空,空代表消息原封不动转发。最后在代码里面订阅
exxk/status/client
即可,代码如下1
2
3
4
5log.info("message {}", message);
String topic= String.valueOf(message.getHeaders().get("mqtt_receivedTopic"));
if(topic.equals("exxk/status/client")){
//处理在线或离线逻辑即可
}设备断电离线会有2分钟左右的延迟
常见问题
问题:配置挂载目录后,启动提示该日志
Failed to read: "data/loaded_modules", error: enoent
,无法访问管理界面,客户端正常连接。解决:更换版本
5.3.1
解决。