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

 在这里插入图片描述

 在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神圣雅诗人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值