控制台就是你启动 EMQX 的地方,如果是使用 docker 启动的,就直接通过 docker log 来查看。
哪里能看到消息丢失的原因?
能具体描述对于「消息丢失」这个问题的具体情况么
- 你的期望是什么
- 实际结果是什么
比如在 MQTT 中没有订阅者的消息,会被直接丢弃,这个标准行为经常会被错误的当作 「消息丢失」了
实际上是有订阅者的,但是这里报错提示就是没有订阅者
能提供具体报错信息么?
就是不知道在哪里看报错啊,就仅仅看到no_subcriberr
这里的 「Topic」支持占位符,可以使用 ${topic} 来表示当的 主题
这个 「no_subscriber」, 是你客户端的报错?
你说的这些似乎 「消息丢失」都没什么关系
规则报的: reason => no_subscribers,timestamp => 1680057956850,
实际上是有订阅者啊
明白你的意思了,你是想表达:
- 实际上有客户端订阅了主题 X
- 但是发向主题 X 的消息却被以 「no_subscribers」为由丢弃了
你现在使用的是哪个版本
然后这种情况之前也遇到过,就是订阅者使用的主题末尾包含了空格,导致看起来是一样的,但实际上不一样
5.0.8
是否可以使用5.0.21避免这种情况
这个应该和版本没有关系,建议你使用「消息追踪」来确定下具体原因。
[{“reason”:“no_subscribers”,“metadata”:{“rule_id”:“reportFail”},“peerhost”:“172.16.169.47”,“clientid”:“000016111MSGWZ00588B153669420000”,“flags”:{“retain”:false,“dup”:false},“node":"emqx@172.16.169.45”,“qos”:0,“payload”:“{"reqId":"188B153669421374344043","ts":"1680076119748","topic":"/subdevice/status","data":{"pid":"midea.hlight.001.001","devId":"04CD15FFFEABCB9A","ep":1,"event":{"LampProtocol":"0164320301"}}}”,“pub_props”:{},“publish_received_at”:1680076119533,“topic”:“/mzgd/event/1678526679872236”,“id”:“0005F805344CE90099EB0E0056C50055”,“event”:“message.dropped”,“username”:“63bfebbacfb449b0894e733d6c44a952”,“timestamp”:1680076119533}]
我说的不是规则引擎的输出,是说你可以用下面这个功能追踪你的消息,通过详细的日志,来排查下原因