2016-09-15 59 views
0

我正在与Paho Java上的项目合作。从代理收到的消息会发送到处理它们的API,但是此过程可能会失败或需要很长时间。我想利用MQTT确认系统,并在这种情况下阻止发送ACK,以便经纪人在一段时间后重新发送相同的消息。 Paho有可能吗?如何防止Paho在处理来自代理的消息后发送ACK?

问候。

+0

这是一个糟糕的主意,QOS握手在那里确保交付恰当地发生,而不是其他一些过程完成的指标。如果您需要通知终端进程已完成,请在有效负载中包含消息标识并发送新消息 – hardillb

回答

1

没有办法保证这会起作用。消息重试是特定于实现的。

的MQTT V3.1.1的Section 4.4规范规定

当客户端重新连接与CleanSession设置为0,无论是客户机 和服务器必须重新发送任何未确认的数据包PUBLISH(其中的QoS 0)和PUBREL数据包使用其原始数据包标识符[MQTT-4.4.0-1]。 这是唯一需要客户端或服务器 才能重新发送消息的情况。

重点是我的。

我见过的趋势是实现去除除了重新连接时的消息重试。

相关问题