mqtt:一种通信协议,类似人类交谈中的汉语、英语、俄语中的一种语言规范
MQ:一种消息队列,也叫通信通道,类似人类交谈中的用电话、email、微信的一种通信方式
json:一种内容格式,就是数据打包的格式。
市面上的MQ产品很多,如阿里自研并开源RocketMQ,还有类似RabbitMQ、**ActiveMQ,**他们不管支持MQTT协议,还支持如AMQP、stomp协议等等,EMQ 使用的协议是mqtt。
只需要看本地MQTT服务器怎么配置的,目录里的二就够了。
到时候要用还是得部署到云MQTT服务器中。
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。 作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
场景:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
位置: 从第2个字节开始。 最长可达4字节。根据最高位判断后面字节是不是剩余长度。所以 4字节长度最大可以表示128128128*128Byte=256MB。
剩余长度(Remaining Length)是一个变长字节整数,用来表示当前控制报文剩余部分的字节数,包括可变报头和负载的数据。剩余长度不包括用于编码剩余长度字段本身的字节数。MQTT控制报文总长度等于固定报头的长度加上剩余长度。
某些 MQTT 控制报文包含一个可变报头部分。它在固定报头和有效载荷之间。可变报头的内容根据报文类型的不同而不同。可变报头的报文标识符(Packet Identifier)字段存在于在多个类型的报文里。
不多赘述
内容过多,详见下:
MQTT Version 3.1.1
只要能发送下面的报文,其实就够了。
连接;断连;订阅;发布;心跳帧。
Apollo已经没有了,网站上只能下载到ActiveMQ了,无所谓的,反正都是用。
ActiveMQ官网
Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。
Ubuntu安装JDK
下载 => 解压 =>配置环境变量 =>使环境变量生效 =>查看java版本
ubuntu下activeMQ安装与配置
下载 => 解压 =>运行 =>检查
关闭: bin文件目录下 ./activemq stop
访问web端:
http://localhost:8161/admin/
or
http://127.0.0.1:8161/admin/
连接服务器:服务器IP就是你ACtivemq 安装的主机的IP
我这边是安装再虚拟机里的ubuntu里了。于是就是192.168.1.62:1883
端口号可以打开cfig文件夹中的activemq.xml来看。
里面有讲到各个协议走的端口号是什么,我们用到了MQTT 就看MQTT那一行就行。
用通信猫输入Ip:port 即可
ID可以随便填,除非ID冲突了;因为服务器没有对客户端做限制,所以账号密码可以随便填。
如果想试一下两个客户端中订阅/发布的过程,就开两个界面来试一下。
这会应该换个ID,因为服务器中id是唯一索引,不能冲突。
如上图所示,两个客户端都连接到服务器,根据对方订阅的主题,发布消息,订阅方就会收到消息。
至此,MQTT本地的服务器端与客户端连接就介绍完了。后面估计会记录一下自己的客户端该怎么做。
真的要使用还是需要服务器挂到成熟的云MQTT服务器上。
MQTT是个很方便的协议,开发阶段可以省时省力。
所以需要完整实现MQTT吗,简单的应用是不是只需要完成上面抓包的数据报就行。能够简化实现。
就像下面链接实现的。
基于STM32实现MQTT
ubuntu下activeMQ安装与配置
Ubuntu16.04配置ActiveMQ