发送重复消息到网桥
问题描述:
我可以防止发送到网桥的重复消息吗? 我已经设置了客户端的重复标志,但代理仍然发送dup = 0的新消息。发送重复消息到网桥
消息m870发送两次,因为第一次PUBACK未被客户端接收到中间)。客户端重新定义了dup = 1的m870,但服务器仍然将消息发送给代理,dup = 0.(这使得其他代理连接到网桥,认为此消息是新消息,并发布给所有订阅的客户端)。
1488965834: Received PUBLISH from client (d0, q1, r0, m870, 'test/topic', ... (10 bytes))
1488965834: Sending PUBACK to client (Mid: 870)
1488965834: Sending PUBLISH to bridge (d0, q1, r0, m58118, 'B/test/topic', ... (10 bytes))
1488965834: Received PUBACK from bridge (Mid: 58118)
1488965838: Received PUBLISH from client (d1, q1, r0, m870, 'test/topic', ... (10 bytes))
1488965838: Sending PUBACK to client (Mid: 870)
1488965838: Sending PUBLISH to bridge (d0, q1, r0, m58121, 'B/test/topic', ... (10 bytes))
1488965838: Received PUBACK from bridge (Mid: 58121)
这个问题也被张贴到mosquitto/issues/398
答
我觉得你错过理解DUP标志。
此标志由客户端在向代理重新传送QOS 1/2消息时设置,该消息未确认发送的原始版本消息的到达。
这也是由经纪人在对客户做同样的事情时设定的。
这些事务中的每一个都是独立的,在发布客户端第一次发送消息时将它们设置为无效。在这里规格
详情:http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc385349261
请不要交叉后的事情多的地方,它的响应片段也 – hardillb
混帐问题通常缺陷(实际问题的代码)不是一般的问题,有一个Mosquitto开发者邮件列表将更适合这些问题。 – hardillb
@hardillb,谢谢你的回复。好吧,我明白了,对不起。我已经订阅邮件列表,但没有回应,我猜邮件列表不工作?你最近有邮件列表中的邮件吗? – Asoul