如何使用mosquitto_publish同步发布数据?

问题描述 投票:0回答:1

我编写了代码(mosquitto_publish()),使用Mosquitto将数据发布到AWS。

我的问题是数据到达MQTT代理的顺序。在Paho客户端,我看到waitForCompletion(),但在Mosquitto中没有类似的东西。有人可以帮我处理这个问题吗?

c mqtt mosquitto libmosquitto
1个回答
0
投票

基于mosquitto_publich documentation,函数在发送“成功”时返回。 MQTT不保证消息到达的顺序,因此您应该可以观察到达而不是发送,并避免让两条消息相互竞争到代理。使用QoS 0,客户端永远不会知道消息是否到达;这需要QoS 1或2,为此交换额外的通信。提高服务质量,您可以使用mosquitto_max_inflight_messages_set(mosq,1),以便客户端排队任何其他消息,直到它收到服务器的确认。这可能比“等待”完成更有效,因为非MQTT操作可以继续。如果您发送许多消息的突发,队列可能会堆积起来。

更复杂的替代方案是发送不受限制的消息,但是每个消息都包含一个索引,以便订阅者可以在接收时对它们进行排序(为此它需要自己的队列和延迟)。如果此负担将由多个订户承担,则不推荐使用。

© www.soinside.com 2019 - 2024. All rights reserved.