Dan*_*iel 7 c++ mqtt libmosquitto pahocpp
我想用 C++ 实现一个 MQTT 客户端功能(它需要是线程安全的,并且能够订阅主题和发布,但不需要代理功能)。
我正在考虑Eclipse 的Paho MQTT。 这是他们的下载页面。
我发现他们没有 MQTT5.0 支持。
然而,在他们的github 上:有一个 C++ 包装器,它在 1.1 版中声明了 MQTTv5.0 支持。
然后我发现了这个问题:Mosquitto vs eclipse paho client library,结论是:
将 libmosquitto 与libmosquittopp包装器一起使用
我检查了 libmosquittopp.h:所有函数都被标记为已弃用,所以我认为到目前为止它不是正确的方法。
为什么不推荐使用 libmosquittopp?因为
包装器是由外部请求产生的,在创建它时,没有其他适用于 MQTT 的 C++ 解决方案。这在过去几年中发生了变化,与真正的 C++ 库或使用纯 C libmosquitto 相比,此包装器没有任何好处。
那么,Paho 现在是否被认为是在 C++ 中使用 MQTT 的正确方向?
或者我只使用 Mosquitto 的纯 C 库?
或者,还有什么(除了从 0 开始写)?
小智 10
Paho C++ 库支持 MQTT v5,并且是线程安全的。您可以使用单个客户端连接从多个线程发布和订阅。
某些 Eclipse 网页需要使用最新功能进行更新。GitHub 存储库往往包含最新信息。
Paho C++ 库只是包装了 Paho C 库,但提供了一个异步的、未来风格的 API,并通过共享指针提供内存管理。
如果您使用Boost.asio,那么这个项目是正确的选择。
https://github.com/redboltz/mqtt_cpp
它是原生 C++,没有 C 包装器,并且支持 v3.1.1 和 v5。
截至 2023 年 11 月,出现了一个新成员,Async.MQTT5:
https://github.com/mireo/async-mqtt5
它也是构建在 Boost.Asio 之上,但具有非常健壮、干净和简洁的代码。来自官方文档:
Async.MQTT5 是基于 Boost.Asio 构建的专业工业级 C++17 客户端。该客户端设计用于从 MQTT 5.0 兼容代理发布或接收消息。Async.MQTT5 代表了 MQTT 5.0 协议标准的全面实现,为发布或接收 QoS 0、1 和 2 的消息提供全面支持。
我们的明确意图是将 Async.MQTT5 库包含到 Boost 中。我们正在积极努力。
免责声明:我在 Mireo 工作,该公司开源了这个 MQTT 客户端。