1. 概述

1.1 MQTT概述

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议特点是轻量、简单、开放和易于实现的。MQTT协议提供有序、无损、双向连接。

MQTT协议本身也是基于消费发布订阅模式,对于实现MQTT协议需要:客户端和服务器端。在MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。

1.2 MQTT术语

网络连接

连接客户端到服务端。

提供一种有序、无损、双向字节流方式。

2 应用消息

MQTT协议为应用跨网络运载的数据。MQTT传输应用消息是包含负荷数据、服务质量(QoS)、 一个属性组合及标题名称。

3客户端(Client)

使用MQTT的程序或设备,即为客户端:

打开服务器连接。

发布其他客户端关注的应用消息。

订阅其关注的应用消息。

取消订阅应用消息

关闭服务器连接。

服务端(Server)

一个程序或设备表作为发布、订阅应用消息客户端的中间协调者,即为服务端。作用包括:

接收客户端的网络连接。

接收客户端发布的应用消息。

处理客户端的订阅、取消订阅请求。

透传应用消息给匹配的客户端订阅者。

关闭客户端的网络连接。

会话(Session)

客户端和服务端有状态的 连接即为会话。部分会话整个连接期间都保持,部分会话只持续几个网络连接。

订阅(Subscription)

订阅包含主题过滤器和服务质量(Qos)。一个订阅只能与一个会话相关,但一个会话可以包含多个订阅。对话中的每个订阅都有不同主题过滤器。

主题名称(Topic Name)

应用消息附带的标签,用于服务订阅匹配,即为主题名称。

  1. 软件简介

2.1 EMQ简介

EMQ是基于高并发的Erlang/OTP语言平台设计,支持百万级连接和分布式集群,发布订阅模式的开源MQTT消息服务器。完整支持MQTT V3.1/V3.1.1协议规范,扩展支持WebSocket、Stomp、CoAP、MQTT-SN或私有TCP协议

2.2 软件版本

目前采用EMQ官网提供的v4.2.9 EMQ X Broker版本.。

EMQ X Broker:EMQ X 开源版,提供 MQTT 协议、CoAP 和 LwM2M 等常见物联网协议的支持;支持 10 万级的并发连接。

EMQ X Broker和EMQ X Enterpris的区别:

1 EMQ X Broke是开源的且是完全免费的,EMQ X Enterpris则是收费的(企业版)

2 二者从性能上对比的主要差异是:十万级和百万级的差异。

3 二者从功能上对比的主要差异是:企业版多了消息存储、增强规则引擎、增强数据桥接等功能。

  1. 安装流程

3.1 windows安装

1 进入官网下载zip包

java MQTT 发布与订阅 mqtt订阅发布流程_java

2 把下载的EMQ解压到D盘,得到一个emqx文件夹,进入CMD命令

执行emqx start

 

java MQTT 发布与订阅 mqtt订阅发布流程_java_02

3.2 linux安装

1 进入官网,选择下载安装包(以 CentOS 8为例)

java MQTT 发布与订阅 mqtt订阅发布流程_java MQTT 发布与订阅_03

2 安装

sudo yum install emqx-centos8-4.2.9-x86_64.rpm

3 安装完毕后,启动

sudo emqx start

4 查看状态:$ emqx_ctl status

java MQTT 发布与订阅 mqtt订阅发布流程_服务器_04

3.3基本命令

EMQ X 提供了 emqx 命令行工具,方便用户对 EMQ X 进行启动、关闭、进入控制台等操作。

emqx start:启动

emqx stop:停止

emqx restart::重启

emqx console:使用控制台启动 EMQ X Broker

  1. 访问验证

1、 Dashboard管理页面

通过 Dashboard,你可以查看服务器基本信息、负载情况和统计数据,可以查看某个客户端的连接状态等信息甚至断开其连接,也可以动态加载和卸载指定插件。

访问浏览器地址http://localhost:18083

用户名:admin

密码:public

java MQTT 发布与订阅 mqtt订阅发布流程_java MQTT 发布与订阅_05

2、EMQ  默认提供 5 个 Listener,它们将占用以下端口:

端口    说明

1883    MQTT/TCP 协议端口

11883   MQTT/TCP 协议内部端口,仅用于本机客户端连接

8883    MQTT/SSL 协议端口

8083    MQTT/WS 协议端口

8084     MQTT/WSS 协议端口

3、 安装文件目录结构

java MQTT 发布与订阅 mqtt订阅发布流程_java MQTT 发布与订阅_06