10

我想在 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 开始写)?

4

2 回答 2

14

Paho C++ 库确实支持 MQTT v5,并且是线程安全的。您可以使用单个客户端连接从多个线程发布和订阅。

某些 Eclipse 网页需要使用最新功能进行更新。GitHub 存储库往往拥有最新信息。

Paho C++ 库只是包装了 Paho C 库,但提供了一个异步的、期货风格的 API,并通过共享指针提供内存管理。

于 2020-04-22T02:52:19.223 回答
6

如果你使用 Boost.asio,那么这个项目是正确的选择。

https://github.com/redboltz/mqtt_cpp

它是原生 C++,没有围绕 C 的包装,并且支持 v3.1.1 和 v5。

于 2020-09-28T21:49:47.463 回答