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

标签 c mqtt mosquitto libmosquitto

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

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

最佳答案

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

更复杂的替代方案是不受限制地发送消息,但每个消息都包含一个索引,以便订阅者可以在收到消息时对它们进行排序(为此,它需要自己的队列和延迟)。如果此负担将落在多个订阅者身上,则不建议这样做。

关于c - 如何使用mosquitto_publish同步发布数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55143474/

相关文章:

python - Paho(MQTT) 客户端无法连接

c - 使用结构将内存分配给结构

c++ - 将 int 和 string 参数传递给线程 C++

compression - MQTT数据压缩

javascript - 如何从 MQTT javascript 客户端连接到 Mosquitto 服务器?

linux - 在 Ubuntu 中使用 websockets 安装 Mosquitto?

c - printf ("%d\n", 1000000001) 导致段错误?

c++ - 闭区间均匀随机数发生器

python - 检测到人脸时,Mqtt发布消息

android - mqtt mosquitto linux 连接限制