百萬級併發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進行聚合、採集消息。

相關文章
相關標籤/搜索