IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> MQTT消息队列遥测传输协议,EMQX消息服务器搭建以及使用Springboot项目连接EMQX服务器实现消息推送和接收 -> 正文阅读

[系统运维]MQTT消息队列遥测传输协议,EMQX消息服务器搭建以及使用Springboot项目连接EMQX服务器实现消息推送和接收


前言

MQTT协议是消息队列遥测传输协议,是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通信协议,提供有序、无损、双向连接,有IBM发布。订阅topic->发布->推送,使用这种步骤实现信息传递。基于服务器进行,如果没有服务器,两者不能产生任何信息传递,一切都得基于服务器进行。
mqtt相当于中断(没有信息的时候,可以是空闲状态),tcp相当于查询(必须不停地查询)。


一、MQTT是什么?

MQTT(Message Queuing Telemetry Transport)是基于客户端-服务器的消息发布/订阅传输协议。基于topic的推送与发送,有着三种通信质量0,1,2,数字越大,表示通信质量越高(确定消息是否成功发送),mqtt在阿里云使用非常广泛,但不是阿里巴巴发明的。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:

  1. Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);
  2. payload,可以理解为消息的内容,是指订阅者具体要使用的内容。

二、MQTTX是什么?

2.1、MQTTX简介

  • MQTT X 是一款开源的 MQTT 5.0 桌面测试客户端,它支持在 macOS,Linux,Windows 操作系统上运行。
  • MQTT X 支持创建多个同时在线的 MQTT 客户端,方便用户快速测试 MQTT/TCP、MQTT/TLS 、MQTT/WebSocket 的连接/发布/订阅功能及其他 MQTT 协议特性。

2.2、MQTTX安装和使用

MQTT下载地址:https://www.emqx.com/zh/try?product=MQTTX,下载之手是一个.exe文件,直接傻瓜式安装即可。

安装MQTTX之后,就可以对MQTT服务器进行测试了,如果还没有部署mqtt服务器可以使用mqttx自带的测试服务器。点击添加新的连接,进入连接添加界面:
在这里插入图片描述
作测试使用,name、username和password都可以随便起。
设置订阅:
在这里插入图片描述
向订阅,发送消息,验证消息的发送和接收:

在这里插入图片描述
发送消息之后,可以发现订阅该topic的客户端均接收到了消息。

三、EMQX是什么?

3.1、EMQX简介

排名第一的开源MQTT消息服务器。在EMQX服务器上可以完成创建客户(client),创建话题(topic)订阅话题以及进行推送消息和接收消息等操作。
EMQX控制台界面如下:
在这里插入图片描述

3.2、EMQX安装及使用

EMQX下载地址https://www.emqx.com/zh/try?product=broker
安装开源版本的即可,我要部署在Linux(Centos7.6)系统上,选的Centos7对应的最新版本:
在这里插入图片描述
然后按照官网的安装方式进行安装即可:

  1. 首先下载zip压缩包,上传到Linux服务器上
  2. 解压压缩包:unzip emqx-4.4.3-otp24.1.5-3-el7-amd64.zip
  3. 运行emqx服务器:./bin/emqx start

执行完成之后,访问:http://你的Ip地址:18083/#/即可进入EMQX控制台:
在这里插入图片描述
在控制台中,我们可以看到有对应的监控(monitor)、客户端(client)、主题(topic)、订阅(subscription)等内容,可以在其中对这些信息进行管理。

四、Springboot项目集成EMQX

代码详解就不再说明了,这里给出代码地址:
示例项目地址:https://github.com/Haojunzuo/mqtt01
代码简介:
首先需要加入maven依赖的坐标,然后在application.yml文件中进行配置mqtt的客户端

  • application.yml配置mqtt服务客户端
mqtt:
  hostUrl: tcp://150.158.10.136:1883
  username: admin
  password: public
  client-id: mqtt_test04
  cleanSession: true
  reconnect: true
  timeout: 100
  keepAlive: 100
  defaultTopic: mqtt_test06/#
  isOpen: true
  qos: 1
server:
  port: 9090

使用MqttProperties类对application.yml文件的配置进行读取。

MqttSendClient和MqttSendCallBack类用于发送消息和发送消息的回调。

MqttAcceptClient和MqttAcceptCallBack类用于接收消息和接收到消息的回调。

使用MqttCondition类来控制启动项目的时候是否启动mqtt,对应的控制参数是mqtt.isOpen,是在application.yml里面设置的。

使用MqttConfig类设置在启动服务的时候开启监听客户端

进行消息的发送和接收都是没问题的,如果绑定的客户端订阅了某个topic,当其他client向该topic发送消息的时候,项目会成功接收到消息并执行接收消息的回调函数。如果绑定的客户端向某个topic发送消息,那么会执行发送消息回调函数。并且其他订阅了该topic的客户端会成功接收到消息。

五、阿里云报文使用

  1. 配置阿里云设备管理平台。(后续可能更新本处)

参考链接:
https://www.runoob.com/w3cnote/mqtt-intro.html
https://blog.csdn.net/weixin_43888891/article/details/121880848

总结

本文主要讲解了什么是mqtt协议,mqtt通信的测试工具mqttx,基于mqtt协议的emqx服务器的搭建,以及使用Springboot集成emqx服务器,并进行了消息推送、订阅和接收任务。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:29:31  更:2022-05-07 11:31:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:31:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码