EMQX控制台在哪里看

控制台就是你启动 EMQX 的地方,如果是使用 docker 启动的,就直接通过 docker log 来查看。

哪里能看到消息丢失的原因?

能具体描述对于「消息丢失」这个问题的具体情况么

  1. 你的期望是什么
  2. 实际结果是什么
    比如在 MQTT 中没有订阅者的消息,会被直接丢弃,这个标准行为经常会被错误的当作 「消息丢失」了

实际上是有订阅者的,但是这里报错提示就是没有订阅者


消息重发布,这里的topic 我们是 topic1 topic2 topic3 ,是否有统一 的topic标识符,我期望是所有topic ,一丢弃就消息重发布,不指定具体topic


能提供具体报错信息么?

就是不知道在哪里看报错啊,就仅仅看到no_subcriberr

这里的 「Topic」支持占位符,可以使用 ${topic} 来表示当的 主题

这个 「no_subscriber」, 是你客户端的报错?
你说的这些似乎 「消息丢失」都没什么关系

        规则报的:    reason => no_subscribers,timestamp => 1680057956850,

实际上是有订阅者啊

明白你的意思了,你是想表达:

  1. 实际上有客户端订阅了主题 X
  2. 但是发向主题 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}]

我说的不是规则引擎的输出,是说你可以用下面这个功能追踪你的消息,通过详细的日志,来排查下原因


就是搞不懂为啥频繁取消订阅之后,然后又自己订阅,什么原因呢