这篇文章是原创文章的,未经许可不得转载
原博主博客地址: https://blog.csdn.net/qq21497936
前博主博客导航: https://blog.csdn.net/QQ 21497936/article/details/102478062
本文博客地址: https://blog.csdn.net/QQ 21497936/article/details/106539703
各位读者,知识无限,人才穷,要么改变需求,要么找专家,要么自己研究
dxmg (红模仿)的博文大全)开发技术收藏) Qt实用技术、草莓馅饼、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等)持续更新中…()
Qt开发专栏:开发技术(点击传送门) 《Qt开发技术:mqtt介绍、QtMqtt编译和开发环境搭建》
《Mqtt开发笔记:Mqtt服务器搭建》
前言使用到mqtt服务器(中间件)。
MQTT协议概述消息队列遥测传输协议(MQTT )是基于发布/加入)模式的“轻量级”通信协议,TCP/IP协议它可以以非常少的代码和有限的带宽为连接到远程设备提供实时可靠的消息服务。 作为低开销、低带宽的即时消息传递协议,广泛用于物联网、小型设备、移动APP应用等。
简化设计原则,在无与伦比的功能发布/订阅(Pub/Sub )模式下,有助于在传感器之间交换消息的用户动态创建主题,并最大限度地减少传输量以提高允许运输成本为零的传输效率假设不知道提供服务质量管理的数据,支持持续会话控制的客户端计算能力可能较低,则不强制传输数据的类型和格式,从而保持灵活性。 使用特征发布/订阅消息模式提供一对多消息发布并解除APP应用的绑定
这与XMPP很相似,但MQTT信息远比XMPP冗馀。 因为XMPP使用XML格式的文本传输数据。 使用TCP/IP为阻止负载内容的消息传输提供网络连接
主流的MQTT基于TCP连接来推送数据,但同样具有被称为MQTT-SN的基于UDP的版本。 因为这两个版本基于不同的连接方式,所以优缺点当然也各不相同。 有三种信息发布服务质量"至多一次",信息发布完全依赖于底层的TCP/IP网络。 会发生消息丢失或重复。 此级别表示环境传感器数据可以丢失一次读取记录。 因为最近有第二次发送。 这种方式主要是普通APP推送,如果你的智能设备在推送消息的过程中没有联网,推送过去没有收到,那么再次联网也收不到。 确保消息到达"至少一次",但可能会发生消息重复。 确认已收到"只有一次"消息一次。 此级别可用于要求苛刻的计费系统。 在计费系统中,如果消息重复或丢失,就会产生不正确的结果。 此最高质量的消息服务还可以用于推送即时消息类APP,使用户只能收到并接收一次。 小型传输,开销小
(固定长度的报头是2字节),以最小化协议交换并减少网络通信量。 “在物联网领域,传感器与服务器的通信、信息收集”、嵌入式计算能力和带宽相对较弱,非常适合使用这些协议传递消息。 客户端异常中断的机制。Last Will:这是一种遗嘱机制,用于通知向同一主题下的其他设备发送遗嘱的设备已断开。Testament:遗嘱机制。 具有与Last Will相似的功能。 发布/订阅模型MQTT是基于客户端服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。机器与机器(M2M )的通信和物联网(IoT )等通常包括受限的环境。 其中,被广泛用于通过卫星链路的通信传感器、偶尔拨号的医疗设备、智能家庭以及一些小型化设备。
从图中可以看出,MQTT有三个作用。
Broker代理:很多人把它理解为中间件,当然可以这样想。 他是中间件。 用于处理信息并将其发送给相应的订阅者。 投稿人:用于向代理发布信息。 注意:发行者可以是订阅者。 订阅者:用于接收信息的客户端。 MQTT服务器MQTT服务器称为消息代理(中介),可以是APP应用程序或设备。 这介于消息发布者和订阅者之间,可以:
接受客户的网络连接; 处理客户端接受客户发布的APP应用信息的订阅/取消请求; 将APP应用程序消息转发给订阅的客户。 MQTT协议中的方法MQTT协议定义了表示用于确定资源的操作的方法(也称为操作)。 根据服务的实现,此资源可以表示现有数据,也可以动态生成数据。 资源通常是指服务器上的文件或输出。 主要方法包括:
Connect :等待与服务器连接的disconnect:mqtt客户端完成工作,并等待与服务器断开TCP/IP会话Sub的连接
scribe:等待完成订阅UnSubscribe:等待服务器取消客户端的一个活多个和topics订阅Publish:MQTT客户端发送消息请求,发送完成后返回应用程序线程Windows上Apache Apoll环境搭建(mqtt) 下载Apache Apoll
官方下载地址:https://activemq.apache.org/
CSDN下载地址:https://download.csdn.net/download/qq21497936/11214539
官方下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html
CSDN下载地址:https://download.csdn.net/download/qq21497936/11214604
下载系统对应的版本,windows x64位
添加java路径到系统Path变量
JAVA_HOME
PATH(最后面加上)
;%JAVA_HOME%隐形的跳跳糖加粗样式CLASSPATH
.;%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar 使用cmd运行java命名,jdk环境配置成功,如下图:
将Apache Apoll解压到C盘下(自定义),如下图:
使用cmd进入该文件夹创建实例:
cd C:apache-activemq-5.15.9cd 隐形的跳跳糖activemq-admin.bat create mybroker
进入mybroker/conf,查看users.properties,可以看到用户名
查看tcp监听端口(可自行修改,笔者不修改)
查看web管理页面端口(可自行修改,笔者不修改)
步骤三:输入admin,admin
步骤四:创建队列测试
至此windows server2008 r2系统上的apache apoll中间件环境以及服务成功搭建完成。
常见错误处理 连接时Qt返回错误码257
客户端遇到协议违规,因此关闭了连接。
错误
检查服务器报错
原因
ActiveMQ有时会报类似Frame size of 257 MB larger than max allowed 100 MB的错误,意思是单条消息超过了预设的最大值,在配置文件中
我们可以配置这个值,但是有时会突然出现很大的单条消息,比如1G。
分析
QtMqtt与服务连接,传过去的属性最大值可能是258MB,所以直接修改服务器配置。
解决方法
重启服务
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/106539703