百万级并发EMQ的Docker搭建和使用

引言

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通信协议,有可能成为物联网的重要组成部分。该协议支持全部平台,几乎能够把全部联网物品和外部链接起来,被用来当作传感器和制动器(好比经过Twitter让房屋联网)的通讯协议。html

EMQ是国人开源的高性能MQTT服务端,支持百万级链接python

Emq官网提供了Linux,Windows,Mac的原生安装包,这里咱们经过Docker搭建web

镜像获取方式:docker

  1. Emq官网下载,经过docker的load命令导入
  2. Emq官方QingCloud镜像
  3. 阿里云镜像

具体步骤

1.拉取镜像

这里选择阿里云镜像
能够直接经过docker命令拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6浏览器

2.运行镜像

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官方文档)性能

3.发布

由于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()
复制代码

4.订阅

依旧先上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()
复制代码

5.测试

  • 先运行订阅代码

查看web端的Dashboard 阿里云

能够看到已经出现了这个chat主题,并且客户端的链接也已经创建了

  • 而后运行发布代码

已经收到了消息,如今打开Dashboard也能够看到链接数从1变成了2,而且出现了sent和receive事件

后记

MQTT做为物联网开源协议,同时支持高质量的Qos,能够用在大部分物联网通讯场景,进行APP定位,消息推送等功能,下面的文章我会接入kafka来进行物联网消息推送,并经过kafka进行聚合、采集消息。

相关文章
相关标签/搜索