MQTTサーバーEMQXのインストールと使用

説明する

MQTT サーバーとして EMQX を選択し、ダウンロード リンクを選択します

インストール パッケージはMacOS、 、Windows、およびLinuxさまざまなリリースとDockerインストール方法をサポートしています。インストールする前に、対応するプラットフォームのバージョンを選択してください。ここでは、主にWindowsプラットフォームの環境インストールとLinuxリリースCentOSプラットフォームが記録されています。また、pythonメッセージ サブスクリプションとサンプル コードも記録されています。言語を押し込む。

Windows プラットフォームのインストール

ダウンロードページに移動し、windowsアイコンを選択します、この例でダウンロードされるファイルとバージョンは次のとおりです。emqx-windows-4.3.5.zip

上記のファイルを D ディスク (この例では D ディスクが使用されていますが、他のディスクを選択できます) に解凍し、コマンド ラインを入力して、ディレクトリを d:\emqx\bin に切り替えます。

# 进入安装盘
C:\Users\lujx>d:
# 进入安装bin目录
D:\>cd emqx\bin
# 安装服务
D:\emqx\bin>emqx install
# 输出:
D:\emqx\erts-11.0\bin\erlsrv.exe: Service emqx_4.3.5 added to system.
[SC] ChangeServiceConfig 成功
# 启动服务
D:\emqx\bin>emqx start

CentOS プラットフォームのインストール

上記と同様に、ダウンロードページに入り、CentOSアイコンをマウスでクリックします、インストール プラットフォームに対応するオペレーティング システムのバージョン番号とインストール パッケージのパッケージ化方法を選択します。この例では、CentOS 764 ビットamdチップ構造のzipインストールを使用します。emqx-centos7-4.3.5-amd64.zip

# 解压文件到安装目录,本示例使用的是/usr/local/,此目录可自行指定
unzip emqx-centos7-4.3.5-amd64.zip -d /usr/local/
# 进入目录
cd /usr/local/emqx
# 启动服务
./bin/emqx start

コンソールアクセス

http://localhost:18083起動後、ログイン ページにアクセスできます。
デフォルトのユーザー名: admin、パスワード:public

Python言語でメッセージ送受信を実現

Python 言語は、mqtt 依存関係ライブラリ paho-matt を提供します。これは、mqtt サーバーとのデータ対話用のインターフェイスを提供するために使用されます。
まず、依存関係パッケージをインストールします。
pip install paho-mqtt

メッセージプッシュ

import datetime
import time

import paho.mqtt.client as mqtt


def on_connect(client, userdata, flags, rc):
    print("Connected with result code: " + str(rc))


def on_message(client, userdata, msg):
    print(msg.topic + " " + str(msg.payload))

mqtt_server = "127.0.0.1"
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(mqtt_server, 1883, 600)  # 600为keepalive的时间间隔

while True:
    msg = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S:%f')
    # 消息推送 
    client.publish('test', payload=msg, qos=0)
    time.sleep(0.02)

ニュース購読

def on_connect(client: mqtt.Client, userdata, flags, rc):
    print("Connected with result code: " + str(rc))


def on_message(client, userdata, msg: mqtt.MQTTMessage):
    global msg_global
    msg_global = str(msg.payload, encoding='utf-8')


mqtt_server="127.0.0.1"
client = mqtt.Client()
# 设置连接成功事件回调函数
client.on_connect = on_connect
# 设置收到消息后的回调函数
client.on_message = on_message
client.connect(mqtt_server, 1883, 600)  # 600为keepalive的时间间隔
client.subscribe('test', qos=0)
client.loop_forever()  # 保持连接 阻塞式

ブロッキングおよびノンブロッキングメッセージのサブスクリプション

上の例では、client.loop_forever()メッセージ サブスクリプションを有効にするために使用されるメソッドはブロックされています。つまり、このコード行の後に記述されたコードは実行されません。

同様に、paho-mqtt はノンブロッキング メソッドを提供しますclient.start_loop()。その後、ループを使用してビジネス ロジックを処理し、次のようにサンプル コードを貼り付けることができます。

import datetime
import time

import paho.mqtt.client as mqtt

msg_global = ""


def on_connect(client: mqtt.Client, userdata, flags, rc):
    print("Connected with result code: " + str(rc))


def on_message(client, userdata, msg: mqtt.MQTTMessage):
    global msg_global
    msg_global = str(msg.payload, encoding='utf-8')

mqtt_server="127.0.0.1"
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(mqtt_server, 1883, 600)  # 600为keepalive的时间间隔
client.subscribe('test', qos=0)
# client.loop_forever()  # 保持连接 阻塞式
client.loop_start()  # 启动连接 非阻塞式

# 业务处理,回调方法中,将收到的消息用过全局变量接收,在主线程中使用此全局变量。
while True:
    if msg_global is not None:
        local_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S:%f')
        print(local_time, msg_global)
        msg_global = None

おすすめ

転載: blog.csdn.net/LJX_ahut/article/details/119189928