Mi

日常をさらさらと

GoでMQTTをsubscribeする

IoTの文脈ではよく使われるMQTTプロトコルで送信されたメッセージをGoで Subscribeする.

開発環境の準備

$ brew intall mosquitto

Macに MQTT Client の mosquitto をインストールする.他の開発環境の場合は、下記のリンクから参照

mosquitto.org

インストールをすると、コマンドとして、 mosquitto mosquitto_sub mosquitto_pub が用意される

mosquitto broker の立ち上げ

mosquitto broker を立ち上げる

Mac の場合には、

$ mosquitto 
1586499763: mosquitto version 1.6.9 starting
1586499763: Using default config.
1586499763: Opening ipv6 listen socket on port 1883.
1586499763: Opening ipv4 listen socket on port 1883.

で立ち上がる

MQTTはデフォルトのport が 1883 になっている. もし、TLS といった証明書をつかった通信をしたい場合は、 /usr/local/Cellar/mosquitto/1.6.9/etc/mosquitto/mosquitto.conf に port の変更と証明書の記載ができるので、そこを変更する.

pub / sub

実際にメッセージを送ってみる

subscribe の立ち上げ

$ mosquitto_sub -t sensors/temperature

topic オプションなしでは立ち上がらないので注意、何かしらのtopicが必要

publish

$ mosquitto_pub  -t sensors/temperature -m "{ "hoge": "foo" }"

同じtopic でコマンドを実行すると、

$ mosquitto_sub -t sensors/temperature
{ hoge: foo }

と表示される.

Go で subscribe

参考というか、そのまま使ったコードがこれ

github.com

$ go run main.go

これで立ち上がるので、

$ mosquitto_pub -t sensors/temperature -m "{ "hoge": "foo" }"

を打つと、

Received message on topic: sensors/temperature
Message: { hoge: foo }

と表示される.