GoでMQTTをsubscribeする
IoTの文脈ではよく使われるMQTTプロトコルで送信されたメッセージをGoで Subscribeする.
開発環境の準備
$ brew intall mosquitto
Macに MQTT Client の mosquitto をインストールする.他の開発環境の場合は、下記のリンクから参照
インストールをすると、コマンドとして、
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
参考というか、そのまま使ったコードがこれ
$ go run main.go
これで立ち上がるので、
$ mosquitto_pub -t sensors/temperature -m "{ "hoge": "foo" }"
を打つと、
Received message on topic: sensors/temperature Message: { hoge: foo }
と表示される.