请选择 进入手机版 | 继续访问电脑版

石家庄老站长

点击联系客服
客服QQ:509006671 客服微信:mengfeiseo
 找回密码
 立即注册
查看: 11|回复: 0

MQTT服务器和客户端?Ubuntu安装配置ActiveMQ、Apollo?局域网内的本地MQTT服务器?

[复制链接]

1

主题

1

帖子

-7

积分

限制会员

积分
-7
发表于 2021-5-2 23:43:47 | 显示全部楼层 |阅读模式
简介

Mqtt:在人类对话中,与中文、英文、俄文的语言规范相似的通信协议

MQ:消息队列,也称为通信频道。类似于人类对话中使用电话、电子邮件、微信等的通信方式。

Json:内容格式,即数据包格式。

除了支持AMQP自行开发和开放源代码RocketMQ、RabbitMQ、**ActiveMQ、* * mqtt协议外,还推出了许多MQ产品,如AMQ、stomp协议等。EMQ使用的协议是MQTT。

您只需查看本地MQTT服务器是如何配置的。目录中的2就足够了。

必须部署在云MQTT服务器上。

文章目录

简介前言1,MQTT简介1。MQTT控制消息格式1.1固定标头Fixed  header1.1.1 MQTT控制消息类型MQTT控制包类型1.1.2标志Flags1.1.3剩余长度remaining  length  1有效负载Payload2捕获包测试2.1 connect  2.2 disconnect

前言

提示:您可以在此处添加要在本文中记录的大致内容。

例如:随着人工智能的发展,机器学习这种技术也变得越来越重要,很多人开始机器学习,本文介绍机器学习的基础内容。

提示:以下是本文正文内容。可以参考以下案例

一、MQTT简介

消息排队电话传输(Mqtt)位于http://www  . Sina.com/(publish/subscribe)
f09;模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。 作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

场景:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

1.MQTT控制报文格式
MQTT控制报文由下面三部分组成:



1.1 固定报头 Fixed header
如下图所示,每个MQTT控制报文都包含一个固定报头。



1.1.1 MQTT控制报文的类型 MQTT Control Packet type


1.1.2 标志 Flags


1.1.3 剩余长度 Remaining Length
位置: 从第2个字节开始。 最长可达4字节。根据最高位判断后面字节是不是剩余长度。所以 4字节长度最大可以表示128128128*128Byte=256MB。

剩余长度(Remaining Length)是一个变长字节整数,用来表示当前控制报文剩余部分的字节数,包括可变报头和负载的数据。剩余长度不包括用于编码剩余长度字段本身的字节数。MQTT控制报文总长度等于固定报头的长度加上剩余长度。

1.2 可变报头 Variable header
某些 MQTT 控制报文包含一个可变报头部分。它在固定报头和有效载荷之间。可变报头的内容根据报文类型的不同而不同。可变报头的报文标识符(Packet Identifier)字段存在于在多个类型的报文里。

不多赘述

1.3 有效载荷 Payload
内容过多,详见下:
MQTT Version 3.1.1

2 抓包测试
[color=]只要能发送下面的报文,其实就够了。

连接;断连;订阅;发布;心跳帧。

2.1 connect


2.2 disconnect


2.3 subscribe


2.4 pubulish


2.5 ping request (心跳帧)


2.6 ping response (心跳帧)


二、建立本地MQTT服务器(Broker)
1.引入Apollo & ActiveMQ
Apollo已经没有了,网站上只能下载到ActiveMQ了,无所谓的,反正都是用。

ActiveMQ官网

Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。

2.ActiveMQ的安装与配置
2.1首先安装并配置JDK。
Ubuntu安装JDK

下载 => 解压 =>配置环境变量 =>使环境变量生效 =>查看java版本

2.2activemq安装配置
ubuntu下activeMQ安装与配置

下载 => 解压 =>运行 =>检查

2.3 activemq 的启动与访问
启动:bin文件目录下 ./activemq start



关闭: bin文件目录下 ./activemq stop

访问web端:
http://localhost:8161/admin/
or
http://127.0.0.1:8161/admin/

建立连接:
查找mqtt服务器IP与端口:



连接服务器:服务器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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图版|手机版|小黑屋|石家庄@IT精英团

GMT+8, 2021-5-16 03:59 , Processed in 0.065985 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2021 Comsenz Inc.

快速回复 返回顶部 返回列表