記事ディレクトリ
説明する
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 7
64 ビット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