MQTT C++客户端

15

我想在C++中实现MQTT客户端功能 (需要具备线程安全性,并能订阅主题以及发布消息,但不需要代理功能)。

我考虑使用Eclipse的Paho MQTT。他们的下载页面可以找到相关信息。

然而,我发现他们没有MQTT5.0的支持。但是,在他们的GitHub上有一个C++包装器版本1.1提供了MQTTv5.0的支持。

然后,我发现了这个问题:Mosquitto vs eclipse paho client library,结论是:

使用带libmosquittopp包装器的libmosquitto

我检查了libmosquittopp.h:所有函数都标记为已弃用,因此我认为目前不应该使用它。

为什么libmosquittopp被弃用?因为:

这个包装器是在外部请求下创建的,当时还没有其他MQTT的C++解决方案。这在过去几年中已经改变了,使用纯C的libmosquitto或真正的C++库比使用这个包装器更有优势。

那么,现在使用Paho在C++中使用MQTT被认为是正确的方向吗?

还是我应该只使用Mosquitto的纯C库?

或者,除了从头开始编写之外,还有其他选择吗?

3个回答

18

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

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

Paho C++库仅包装Paho C库,但提供异步的类future API,并通过共享指针提供内存管理。


7

5
停止出版!截至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客户端是我们开源的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接