MQTT—EMQX

一、MQTT协议介绍
(一)什么是MQTT
MQTT 是基于 Publish/Subscribe(发布/订阅) 模式的物联网通信协议,凭借简单易实现、支持 QoS、报文小等特点

MQTT中文文档EMQ X 消息服务器简介 | EMQ Docs

(二)MQTT角色组成
1、服务端(Broker)
EMQX就是一个MQTT的Broker,此外还要其他的Broker如下:

MQTT Broker 有几个:
1. Eclipse Mosquitto: https://github.com/eclipse/mosquitto
使用 C 语言实现的 MQTT Broker。Eclipse 组织还还包含了大量的 MQTT 客户端项目:https://www.eclipse.org/paho/#
2. EMQX: https://github.com/emqx/emqx
使用 Erlang 语言开发的 MQTT Broker,支持许多其他 IoT 协议比如 CoAP、LwM2M 等
3. Mosca: https://github.com/mcollina/mosca
使用 Node.JS 开发的 MQTT Broker,简单易用。
4. VerneMQ: https://github.com/vernemq/vernemq
同样使用 Erlang 开发的 MQTT Broker

2、客户端(消费者【订阅】、生产者【发布】)

 EMQX 通过里面的websocket 可以实现消息的发布与订阅

当然我们常常会通过java代码来实现我们消息的生产者和消费者

在安装好EMQX代理服务器后,EMQX 不仅仅为我们提供了Mqtt broker,EMQX 的dashboard(一个EMQX的web界面)可以通过 websocket 这个功能实现消息的发布与订阅 

(三)三种消息发布服务质量:QoS 

MQTT有三种消息发布服务质量:

QoS 0 “至多一次” (消费次数<=1),消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。这一种方式主要普通APP的推送,倘若你的智能设备在消息推送时未联网,推送过去没收到,再次联网也就收不到了。
QoS 1 “至少一次” (消费次数>=1),确保消息到达,但消息重复可能会发生。
QoS 2 “只有一次” (消费次数=1),确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。在计费系统中,消息重复或丢失会导致不正确的结果。这种最高质量的消息发布服务还可以用于即时通讯类的APP的推送,确保用户收到且只会收到一次。
(四)消息的组成
MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:
(1) Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容。
(2) payload,可以理解为消息的内容,是指订阅者具体要使用的内容。

(五) MQTT协议数据包结构
(1)固定头(Fixed header)。存在于所有MQTT数据包中,表示数据包类型及数据包的分组类标识,
如连接,发布,订阅,心跳等。其中固定头是必须的,所有类型的MQTT协议中,都必须包含固定头。
(2)可变头(Variable header)。存在于部分MQTT数据包中,数据包类型决定了可变头是否存在及其
具体内容。可变头部不是可选的意思,而是指这部分在有些协议类型中存在,在有些协议中不存在。
(3)消息体(Payload)。存在于部分MQTT数据包中,表示客户端收到的具体内容。 与可变头一样,
在有些协议类型中有消息内容,有些协议类型中没有消息内容。
 

 Broker TCP 端口: 1883

Broker SSL 端口: 8883

emqx dashboard 需要的端口号:18083

emqx 自带的客户端端口号:8083

 MQTT—EMQX_第1张图片

 MQTT—EMQX_第2张图片

你可能感兴趣的:(《协议》,java,开发语言,后端)