Docker MQTT のインストールと使用のチュートリアル

Docker MQTT のインストールと使用のチュートリアル

MQTT の紹介

MQTT (Message Queuing Telemetry Transport) は、IBM が開発したインスタント メッセージング プロトコルであり、モノのインターネットの重要な部分になる可能性があります。このプロトコルはすべてのプラットフォームをサポートしており、ほぼすべての接続オブジェクトを外部の世界に接続できます。センサーやアクチュエータの通信プロトコルとして使用されます(Twitter 経由で家をインターネットに接続するなど)。

DockerはRabbitMQをインストールし、MQTTを設定します

MQTT サーバーとして RabbitMQ を使用し、クライアントとして Eclipse Paho を使用します。ホストシステムはUbuntu 16.04です

Docker ダウンロードイメージ

docker pull daocloud.io/library/rabbitmq:3.7.4

RabbitMQを起動する

docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5672:5672 -p 1883:1883 -p 15675:15675 daocloud.io/library/rabbitmq:3.7.4

マッピングコンテナポートに注意してください

  • 15672はRabbitMQ管理インターフェースのデフォルトのアクセスポートです。
  • 5672はamqpのデフォルトポートです
  • 1883はMQTT TCPプロトコルのデフォルトポートです
  • 15675はweb_mqtt websocketプロトコルのデフォルトポートです

プラグインを有効にする

デフォルトのインストール後、rabbitmq_management プラグイン、rabbitmq_mqtt プラグイン、rabbitmq_web_mqtt プラグインを手動で有効にする必要があります。

次の3つのコマンドを実行します

docker exec <コンテナID> rabbitmq-plugins で rabbitmq_management を有効にする
docker exec <コンテナID> rabbitmq-plugins enable rabbitmq_mqtt
docker exec <コンテナID> rabbitmq-plugins enable rabbitmq_web_mqtt

もちろん、start.shスクリプトを書いてコンテナにコピーすることもできます。

/usr/sbin/rabbitmq-plugins でrabbitmq_managementを有効にする
/usr/sbin/rabbitmq-plugins でrabbitmq_mqttを有効にする
/usr/sbin/rabbitmq-plugins でrabbitmq_web_mqtt を有効にする

コンテナに入り、このスクリプトを実行します。

sh start.sh

ホストポートを開く

ファイアウォールコマンド --zone=public --add-port=15672/tcp --permanent
ファイアウォールコマンド --zone=public --add-port=5672/tcp --permanent
ファイアウォールコマンド --zone=public --add-port=1883/tcp --permanent
ファイアウォールコマンド --zone=public --add-port=15675/tcp --permanent
ファイアウォール-cmd --reload

Python MQTTクライアント実装

Python パッケージをインストールする

pip install paho-mqtt

データ送信デモ(消費者)

# 使用する前に、hbase と thrift サーバーを起動する必要があります。# cd /usr/local/hbase bin/start-hbase.sh で hbase を起動します。デフォルトのポートは 60000 です。
# Thriftサーバーを起動します。cd /usr/local/hbase/bin execute ./hbase-daemon.sh start thrift デフォルトのポートは9090です。
インポートシステム
インポートOS
dir_common = os.path.split(os.path.realpath(__file__))[0] + '/../'
sys.path.append(dir_common) # 通常は共通フォルダを参照するためにシステムディレクトリにルートディレクトリを追加します import argparse #
インポートログ
インポート時間、日時
common.py_log から init_logger、init_console_logger をインポートします
common.config からインポート *
common.py_hbase から PyHbase をインポートします
インポート時間、json
common.py_rabbit から Rabbit_Consumer をインポートします
paho.mqtt.client を mqtt としてインポートします。
インポート時間
ホスト = "192.168.2.46"
ポート = 1883
client_loop() を定義します:
  client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
  client = mqtt.Client(client_id) # ClientId は繰り返すことができないため、現在の時刻を使用します client.username_pw_set("guest", "guest") # 設定する必要があります。設定しないと、「結果コード 4 で接続されました」が返されます
  クライアント.on_connect = on_connect
  クライアント.on_message = on_message
  クライアント.connect(ホスト、ポート、60)
  クライアント.loop_forever()
on_connect を定義します(クライアント、ユーザーデータ、フラグ、rc):
  print("結果コード "+str(rc) で接続されました)
  クライアント.subscribe("テスト")
on_message を定義します(クライアント、ユーザーデータ、メッセージ):
  print(msg.topic+" "+msg.payload.decode("utf-8"))
__name__ == '__main__' の場合:
  クライアントループ()

データ受信デモ(プロデューサー)

インポートシステム
インポートOS
dir_common = os.path.split(os.path.realpath(__file__))[0] + '/../'
sys.path.append(dir_common) # 共通フォルダを参照するためにシステムディレクトリにルートディレクトリを追加します。通常は import paho.mqtt.client as mqtt
インポート時間
ホスト = "192.168.2.46"
ポート = 1883
client_loop() を定義します:
  client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
  client = mqtt.Client(client_id) # ClientId は繰り返すことができないため、現在の時刻を使用します client.username_pw_set("guest", "guest") # 設定する必要があります。設定しないと、「結果コード 4 で接続されました」が返されます
  クライアント.on_connect = on_connect
  クライアント.on_message = on_message
  クライアント.connect(ホスト、ポート、60)
  クライアント.loop_forever()
on_connect を定義します(クライアント、ユーザーデータ、フラグ、rc):
  print("結果コード "+str(rc) で接続されました)
  クライアント.subscribe("テスト")
on_message を定義します(クライアント、ユーザーデータ、メッセージ):
  print(msg.topic+" "+msg.payload.decode("utf-8"))
__name__ == '__main__' の場合:
  クライアントループ()

プロデューサーデモ

# paho.mqtt.client を mqtt としてインポートします
paho.mqtt.publish を publish としてインポートします。
インポート時間
ホスト = "192.168.2.46"
ポート = 1883
on_connect を定義します(クライアント、ユーザーデータ、フラグ、rc):
  print("結果コード "+str(rc) で接続されました)
  クライアント.subscribe("テスト")
on_message を定義します(クライアント、ユーザーデータ、メッセージ):
  print(msg.topic+" "+msg.payload.decode("utf-8"))
__name__ == '__main__' の場合:
  client_id = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
  # client = mqtt.Client(client_id) # ClientId は繰り返すことができないため、現在の時刻を使用します# client.username_pw_set("guest", "guest") # 設定する必要があります。設定しないと、「結果コード 4 で接続されました」が返されます
  # クライアント.on_connect = on_connect
  # クライアント.on_message = on_message
  # client.connect(ホスト、ポート、60)
  # client.publish("test", "Hello MQTT", qos=0, preserve=False) # メッセージをパブリッシュ publish.single("test", "Hello MQTT", qos = 1, hostname=HOST, port=PORT, client_id=client

公式ドキュメント:
mqtt http://www.rabbitmq.com/mqtt.html

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • WeChatアプレットはサーバーに接続してMQTTデータ情報を表示します
  • Dockerを使用してMQTTサーバーを構築するプロセスの詳細な説明

<<:  ドロップダウンメニュー効果を実現するJavaScript

>>:  Mysql GTID Mha 設定方法

推薦する

シンプルなウェブデザインコンセプトのカラーマッチング

(I)ウェブページのカラーマッチングの基本概念(1)白黒の言葉は永遠のテーマです。誰もそれを悪く言う...

HTML テーブル マークアップ チュートリアル (14): テーブル ヘッダー

<br />HTML 言語では、タグを使用してテーブルにタイトルを自動的に追加できます。...

SQLシリアル番号取得コード例

この記事は主にSQLシリアル番号取得コード例を紹介します。記事ではサンプルコードを詳細に紹介しており...

ES6のシンボルデータ型について詳しく説明します

目次シンボルデータタイプシンボルが表示される理由シンボルの特徴シンボルの応用rbオブジェクトにupメ...

MySQL で binlog を使用する際のフォーマットの選択方法

目次1. binlogの3つのモード1.ステートメントレベルモード2. 行レベルモード3. 混合モー...

新しいユーザーを作成し、MySQLに権限を付与する最も簡単な方法

ユーザーを作成します: 'oukele' によって識別されるユーザー 'ou...

Tomcat サーバーの応答が遅い場合の解決策

1. 分析的思考1. 機械自身の理由を排除する2. サーバーパフォーマンス分析3. プロジェクト自体...

webpackでCSSを分割・圧縮し、リンクでインポートする手順

まずコードファイルの構造を見てみましょう。エントリファイル (index1.js) の内容: ...

バックエンドデータを取得するためのVue Elementフロントエンドアプリケーション開発

目次概要1. バックエンドデータの取得と処理2. インターフェース表示処理概要前回のエッセイ「ステッ...

win2008R2 64 ビット システムでの mysql5.7.17 のインストールと構成の例

123WORDPRESS.COM では、さまざまな環境での MYSQL の他のバージョンのインストー...

Linux運用保守ツールSupervisor(プロセス管理ツール)のインストールと使用

1. はじめにSupervisor は Python で開発された汎用プロセス管理プログラムです。通...

Linux での stat 関数と stat コマンドの使用法の詳細な説明

stat 関数と stat コマンドLinux ファイル内の [inode = インデックス ノード...

Ubuntu 18.04にPython仮想環境をインストールする

Ubuntu 18.04 を使用する Python 開発者向けの参考資料です。 1. Ubuntu ...

CentOS7.3 での MySQL 8.0.13 のインストールと設定のチュートリアル

1. 基本環境1. オペレーティングシステム: CentOS 7.3 2. MySQL: 8.0.1...

Vue でコンポーネントを一括インポート、登録、使用する方法

序文コンポーネントは、非常に頻繁に使用されるものです。多くの人は、コンポーネントを 1 つのファイル...