MQTT C++ 客户端

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

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

c++ mqtt libmosquitto pahocpp
3个回答
18
投票

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

一些 Eclipse 网页需要更新为最新功能。 GitHub 存储库往往拥有最新信息。

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


7
投票

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

https://github.com/redboltz/mqtt_cpp

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


0
投票

停止媒体!截至 2023 年 11 月,出现了一个新成员,Async.MQTT5:

https://github.com/mireo/async-mqtt5

它也是构建在 Boost.Asio 之上,但具有非常健壮、干净和简洁的代码。来自官方文档:

Async.MQTT5 是一个专业的工业级 C++20 客户端,构建于 Boost.Asio。该客户端设计用于发布或接收 来自 MQTT 5.0 兼容代理的消息。 Async.MQTT5代表一个 全面实现MQTT 5.0协议标准, 提供对 QoS 0 消息的发布或接收的全面支持, 1 和 2。

我们的明确意图是将 Async.MQTT5 库包含到 Boost 中。 我们正在积极努力。

免责声明:我在 Mireo 工作,该公司开源了这个 MQTT 客户端。

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