emq获取所有发布内容
如需转载请标明出处
QQ技术交流群:129518033
文章目录
环境:
emqx: v4.3.8
前言
调试阶段,在不知道主题的情况下获取其他系统发布的主题及内容。
1. 登录emq管理中心
http://127.0.0.1:18083
默认账号:admin,默认密码:public
2. 配置获取所有主题
【 规则引擎】-【规则】-【新建】
2.1 设置【规则 SQL】
获取所有消息发布事件的信息
SELECT
*
FROM
"#"
注意:
3.x 版本中所有事件 FROM 子句后面均需要指定事件名称,4.0 以后我们引入 事件主题 概念,默认情况下 消息发布 事件。
emqx 4.0 及以后版本,默认处理 message.publish 事件,FROM 后面直接填写 MQTT 主题,如SELECT * FROM ‘t/#’。
其他事件,FROM 后面填写事件主题,如SELECT * FROM “$events/message_delivered” (该事件需要有订阅后才能响应,即消息送达响应)
FROM 子句可用的事件主题
| 事件主题名 | 释义 |
|---|---|
| $events/message_delivered | 消息投递 |
| $events/message_acked | 消息确认 |
| $events/message_dropped | 消息丢弃 |
| $events/client_connected | 连接完成 |
| $events/client_disconnected | 连接断开 |
| $events/session_subscribed | 订阅 |
| $events/session_unsubscribed | 取消订阅 |
WebHook
client.connected:客户端上线
client.disconnected:客户端连接断开
client.subscribe:客户端订阅主题
client.unsubscribe:客户端取消订阅主题
session.created:会话创建
session.resumed:会话恢复
session.subscribed:会话订阅主题后
session.unsubscribed:会话取消订阅主题后
session.terminated:会话终止
message.publish:MQTT 消息发布
message.delivered:MQTT 消息送达
message.acked:MQTT 消息回执
message.dropped:MQTT 消息丢弃
2.2 设置【响应动作】
动作 : 消息重新发布 【桥接数据到 MQTT Broker、发送数据到 Web 服务、空动作 (调试)、检查 (调试)、消息重新发布】
目的主题 : all_publish
目的 QoS : 0
消息内容模板(通过【SQL 测试】可查看字段) :
event: ${event}
topic: ${topic}
payload: ${payload}
timestamp: ${timestamp}
普通主题 (消息发布)
| event | 事件类型,固定为 “message.publish” |
|---|---|
| id | MQTT 消息 ID |
| clientid | Client ID |
| username | 用户名 |
| payload | MQTT 消息体 |
| peerhost | 客户端的 IPAddress |
| topic | MQTT 主题 |
| qos | MQTT 消息的 QoS |
| flags | MQTT 消息的 Flags |
| headers | MQTT 消息内部与流程处理相关的额外数据 |
| timestamp | 事件触发时间 (ms) |
| publish_received_at | PUBLISH 消息到达 Broker 的时间 (ms) |
| node | 事件触发所在节点 |
3. 通过websocket订阅结果
【工具】-【websocket】-【连接】-【订阅主题all_publish】
Topic: all_publish QoS: 0
event: message.publish
topic: testtopic
payload: { "msg": "Hello, World!" }
timestamp: 1632375474479
License
License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎
Reference:
NULL