2023年2月2日木曜日

Docker Hub の公式 RabbitMQ イメージで、 MQTT over WebSocket を試す

前提

  • OS: Windows 11 Pro 22H2 ビルド 22621.963
  • Docker Desktop: version 4.15.0 (93002)
  • 使用イメージ: rabbitmq:3.11

イメージの pull

docker pull rabbitmq:3.11

プラグインの一覧確認

docker run -it --rm --name rabbitmq rabbitmq:3.11 rabbitmq-plugins list

プラグイン有効化設定ファイルの作成

プラグイン有効化設定のためのファイルを作成し、 rabbitmq_mqttrabbitmq_web_mqtt を有効にする設定を記述。

echo "[rabbitmq_mqtt,rabbitmq_web_mqtt]." > enabled_plugins

MQTT over WebSocket の設定

今回は、エンドポイントのパスと、待ち受けポート番号を変更する。

echo "web_mqtt.ws_path = /mqtt" > rabbitmq.conf
echo "web_mqtt.tcp.port = 9090" >> rabbitmq.conf

RabbitMQ コンテナ起動

作成した設定ファイルを渡しつつ rabbitmq を実行。

docker run -it --rm --name rabbitmq -v "$(pwd)/enabled_plugins:/etc/rabbitmq/enabled_plugins" -v "$(pwd)/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf" -p "9090:9090" rabbitmq:3.11

動作確認

HiveMQ の MQTT WebSocket クライアント を使って、先ほど起動したコンテナへ接続する。

今回は、シークレットモードの FireFox, Google Chrome を使って、 testtopic/1 をサブスクライブしたりパブリッシュしたりしてみた。

はい、上手くできていそう。

以上。

参考資料