Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
从 MQTT Broker 收到消息后,我有一个情况,在处理数据期间,假设 DB 已关闭且未完成任务。在那种特殊情况下,收到的数据必须发送回经纪人,我的任务没有完成,我的意思是回滚。
如何实现这一点以及如何告诉代理在处理数据期间出现了一些异常,您需要再次发送数据。
有人可以解决这个问题吗?
可以这样做,但只能使用某些允许您完全控制 QOS 握手过程的 MQTT 客户端库。
假设客户端在 QOS 1 或 2 订阅了一个主题,它可以选择保留将 PUBACK 或 PUBREC 数据包发送回代理。它可以推迟完成 QOS 握手,直到消息被完全处理。如果处理失败并且未完成完整的握手,则代理将尝试再次将消息重新传递给客户端,因此客户端应在失败的情况下脱机,以便损坏的消息将消息排队。
当后端(数据存储)重新上线时,客户端可以重新连接到代理,排队的消息将被重新传递。