0
我正在与Paho Java上的项目合作。从代理收到的消息会发送到处理它们的API,但是此过程可能会失败或需要很长时间。我想利用MQTT确认系统,并在这种情况下阻止发送ACK,以便经纪人在一段时间后重新发送相同的消息。 Paho有可能吗?如何防止Paho在处理来自代理的消息后发送ACK?
问候。
我正在与Paho Java上的项目合作。从代理收到的消息会发送到处理它们的API,但是此过程可能会失败或需要很长时间。我想利用MQTT确认系统,并在这种情况下阻止发送ACK,以便经纪人在一段时间后重新发送相同的消息。 Paho有可能吗?如何防止Paho在处理来自代理的消息后发送ACK?
问候。
没有办法保证这会起作用。消息重试是特定于实现的。
的MQTT V3.1.1的Section 4.4规范规定
当客户端重新连接与CleanSession设置为0,无论是客户机 和服务器必须重新发送任何未确认的数据包PUBLISH(其中的QoS 0)和PUBREL数据包使用其原始数据包标识符[MQTT-4.4.0-1]。 这是唯一需要客户端或服务器 才能重新发送消息的情况。
重点是我的。
我见过的趋势是实现去除除了重新连接时的消息重试。
这是一个糟糕的主意,QOS握手在那里确保交付恰当地发生,而不是其他一些过程完成的指标。如果您需要通知终端进程已完成,请在有效负载中包含消息标识并发送新消息 – hardillb