问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Mqtt开发笔记:windows下C++ ActiveMQ客户端介绍、编译和使用

发布网友 发布时间:2024-10-08 03:35

我来回答

1个回答

热心网友 时间:2024-11-01 07:15

前话

项目需求驱使我们转向 MQTT 协议的实现,由于 QtMqtt 库不支持队列模式(点对点),而只能使用订阅/发布者模式,我们决定采用 C++ ActiveMQ 进行开发。

MQTT 协议

MQTT,即消息队列遥测传输协议,是一种基于发布/订阅模式的轻量级通讯协议,IBM 在 1999 年发布。其优点在于,以极低的代码量和带宽消耗提供即时可靠的消息服务,广泛应用于物联网、小型设备和移动应用。

设计原则与特点

MQTT 的核心特点是发布/订阅消息模式,实现一对多的消息发布,减少应用程序间的耦合。它对负载内容进行屏蔽的高效传输,基于 TCP/IP 提供网络连接,支持三种消息发布服务质量。它的小型传输、低开销和客户端异常中断机制,使其非常适合物联网领域,尤其适用于传感器与服务器间的通信,以及信息收集。

发布/订阅者模式

MQTT 是基于客户端-服务器的消息发布/订阅传输协议,适用于受限环境,如机器与机器通信、物联网应用,特别适合传感器和服务器通信,以及小型设备的运算能力和带宽相对不足的情况。

MQTT 服务器

MQTT 协议中的服务器角色称为“消息代理”,可以是应用程序或设备,位于消息发布者和订阅者之间,负责数据推送。

MQTT 协议中的方法

MQTT 定义了一系列方法(动作),用于操作服务器上的资源,包括数据处理和生成。主要方法包括读取、写入、订阅和发布等。

CMS 客户端

CMS API 是一种类似 JMS 的 C++ API,用于与消息代理进行交互,如 Apache ActiveMQ,它使客户端代码更加整洁、易于维护。

下载与编译 ActiveMQ-CPP

下载 ActiveMQ-CPP 的最新 Windows 版本源码,推荐访问官网或 CSDN 下载页面。使用 VS2017 编译 ActiveMQ-CPP。

编译步骤

1. 解压下载的压缩文件至专用文件夹。
2. 使用 VS2017 打开编译工程文件。
3. 编译“avtivemq-cpp”时遇到“/ZI”和“/Gy-”命令行选项不兼容的错误。
4. 通过手动更改“/Zi”和“/Gy”命令为兼容版本来解决。
5. 继续编译工程生成 debug 和 release 版本。
6. 编译通过,切换到 release 版本后,需要重新配置包含头文件属性并编译。

编译 APR-1.7.0 库

ActiveMQ 依赖 APR 库,其相关信息在源码根目录的 README.txt 中提供。首先下载 APR 库,解压至专用编译文件夹,使用 CMake 配置工程,生成 VS2017 工程文件。然后,使用 CMake 生成 APR 库,通过 VS2017 打开并编译工程,最终完成头文件和库文件的归类整理。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
平方公里与亩有什么区别? 申请名称预先核准应提交哪些档 申请名称预先核准应提交哪些资料 申请名称预先核准需要哪些资料 如何隐藏iphonex的刘海? 07款凯美瑞遥控怎么换电池 金针云耳蒸滑鸡做法 爱奇艺VIP会员有哪些免费领取或者低价购买的渠道?持续更新中_百度知 ... 吸尘器应该怎么选?全屋灰尘清洁神器——追觅 V16 吸尘器深度测评 两个长方形重叠部分的面积相当于小长方形面积的4分之1,相当于大的6分... php 如何实现网站 上传文章的时候 直接上传到sina微博? 如何做小白菜简单好吃 ...@人名 正则匹配php如何实现,微博有这个功能不知道是如何做的? 请问?支气管扩张、走路喘气痰多,黏绸不易咳出,用什么药物做雾化最好?谢... 我有支扩病史,请问吐大量白痰只有这一症 咳嗽有白痰如何缓解 咳嗽、咳白痰是什么原因导致的 支气管扩张患者痰液的表现 支气管扩张痰多怎么办 ...还是身体里面缺少了什么呢有什么办法可以少掉头发呢? 如何处理别人对你的称谓? 蓝屏代码:0x0000008E(0xC0000005,0x7E537190,0xB0AC922C,0x... 猢狲入布袋的解释 当别人使用我不喜欢的称谓时,怎么办? 如何面对他人对自己的称谓? 如何在意别人对你的称谓? 为什么各国电压和电源频率都不一样呢? 为什么各国电源插头没有统一的标准? 从西安火车站有没有 直达西安火车南站的公交车啊?谢谢朋友没有回答! 王者荣耀二级密码忘了怎么办_王者荣耀二级密码忘了怎么快速找回_百度... 1992年10月1日到是什么时候才算成年 划拨土地使用权的年限最长是多少年 请问身份证为1992年10月01号2015年那月过生日 划拨土地使用权年限是多久? 紫砂壶内推是什么意思 百度账号用户名不能修改吗 百度账号用户名不可以改吗 有没人知道百度账号如何改用户名?? 我的红运当头花花蕊枯了 Avaya的产品线问题,ip office 和communication manager产品线的产品... “跨界+直播+IP”新玩法,燃爆慕思&皇派直播间 SONY VGN-SR49D/J软件系统 刀塔传奇SF是什么? 鲁滨逊漂流记主要内容 《鲁滨逊漂流记》的创作背景 章子怡仙女散花歌词 火球买手怎么样 火球买手有假货吗介绍_火球买手怎么样 火球买手有假货... 火球买手 小埋对什么东西过敏? 章子怡的《天女散花》歌词? 农大师生收麦被指作秀,校方发问为什么人越无知越傲慢,你同意哪一方? 方形钻石价格怎么样?