MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通信协议,有可能成为物联网的重要组成部分。该协议支持全部平台,几乎能够把全部联网物品和外部链接起来,被用来当作传感器和制动器(好比经过Twitter让房屋联网)的通讯协议。html
EMQ是国人开源的高性能MQTT服务端,支持百万级链接python
Emq官网提供了Linux,Windows,Mac的原生安装包,这里咱们经过Docker搭建web
镜像获取方式:docker
这里选择阿里云镜像
能够直接经过docker命令拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6
浏览器
docker run --name emq -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083 -d registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6
镜像配置说明:
- 防火墙开启1883(MQTT)
- 8083(WebSocket)
- 18083(Dashboard控制台)端口
- Dashboard 控制台,默认管理员: admin, 密码: public
- 在浏览器中输入 http:192.168.99.100:18083进入Web控制台,用户名:admin 密码:publicoop
映像默认容许1万线 MQTT 链接,最大可配置到10万线。映像内存占用: 5万链接/1G内存(from官方文档)性能
由于mqtt自己是发布订阅模型,
复制代码
这里咱们使用python做为服务端发布(主要是简单😊),须要引入paho包测试
import paho.mqtt.client as mqtt
HOST = "127.0.0.1"�
PORT = 1883
def pub():
client = mqtt.Client()
client.connect(HOST, PORT, 60)
client.publish("chat", "hello", 2) # 发布一个主题为'chat',内容为‘hello liefyuan’的信息
client.loop_forever()
if __name__ == '__main__':
pub()
复制代码
依旧先上python代码ui
import paho.mqtt.client as mqtt
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("chat")
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
print(msg.topic+" "+str(msg.payload))
if __name__ == '__main__':
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("127.0.0.1", 1883, 60)
client.loop_forever()
复制代码
查看web端的Dashboard 阿里云
MQTT做为物联网开源协议,同时支持高质量的Qos,能够用在大部分物联网通讯场景,进行APP定位,消息推送等功能,下面的文章我会接入kafka来进行物联网消息推送,并经过kafka进行聚合、采集消息。