MQTT简介
MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅范式的消息协议,它是轻量、简单、开放和易于实现的。MQTT是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。因此,它在许多场景下都得到了广泛的应用,包括受限的环境,如机器与机器(M2M)通信和物联网(IoT)等。
MQTT协议工作在TCP/IP协议族上,它基于ISO标准(ISO/IEC PRF 20922)。在TCP端口上,它使用固定的端口号,其中,MQTT服务器使用的端口号是1883,MQTT SSL服务器使用的端口号是8883。
MQTT协议的特点包括:
- 设计简单:协议的设计以简单性为首要目标,使其易于实现和理解。
- 可扩展性:MQTT协议允许根据需要扩展消息的发布和接收,这使得它适用于各种设备和网络环境。
- 可靠性:MQTT协议提供了消息的QoS(Quality of Service)级别,包括“至多一次”、“至少一次”和“恰好一次”的传递保证,以满足不同应用场景的需求。
- 异步通信:MQTT协议支持异步通信,即发送者和接收者可以异步进行消息的传递,这使得它可以适应于不同的网络环境和设备性能。
- 基于发布/订阅范式:MQTT协议采用发布/订阅范式,使得消息的发布者和订阅者可以解耦,增强了系统的灵活性和可扩展性。
总之,MQTT是一种广泛应用于物联网和M2M通信领域的消息协议,它的设计简单、可靠、可扩展和异步通信等特点使其能够适应各种不同的应用场景。
MQTT实现方式
MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,通过使用发布者和订阅者之间的主题(topic)来实现在网络中的通信。
以下是一个简单的MQTT协议工作流程图解:
- 发布者(publisher)向MQTT代理(broker)发布消息,该消息将被路由到相应的主题(topic)。
- MQTT代理(broker)根据主题(topic)将消息转发给订阅者(subscriber)。
- 订阅者(subscriber)接收到消息后,可以进行相应的处理。
- 发布者(publisher)和订阅者(subscriber)可以根据需要建立持久连接或临时连接,以便在有新消息时接收或发送。
- MQTT代理(broker)可以维护和管理连接、消息队列和QoS(Quality of Service)等级等。
需要注意的是,MQTT协议支持多种QoS等级,包括“至多一次”、“至少一次”和“恰好一次”的传递保证。此外,MQTT协议还支持发布时确认和回滚机制,以确保消息的可靠传递。一个设备可以既是发布消息端,也可以同时订阅消息。
Docker搭建MQTT服务器(EMQX Broker)
[EMQX官方文档]www.emqx.io/docs/zh/v4.…
1.从DockerHub拉取EMQX开源版镜像
官网:hub.docker.com/r/emqx/emqx… 不写版本号,默认是最新版(latest)。
docker pull emqx/emqx
2.运行容器
docker run -d --name emqx -p 18084:1883 -p 18085:8081 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx
参数解释:
–name emqx # 容器名为emqx,可自定义
-p 18083:18083 # web端后台管理页端口
-p 18084:1883 # MQTT TCP端口
-p 8883:8883 # MQTT TCP TLS/SSL
-p 8083:8083 # HTTP and WebSocket
-p 8084:8084 # HTTPS and WSS 端口
3. 进入web后台管理页面
后台管理地址:http://your-server-ip:18083
默认账号:admin 密码:public