MQTTで遊ぶ(導入編)
MQTTとは
次のURL参照で(他力本願)
ざっくり雑にまとめると、メッセージ配信に使用する軽量なプロトコルって感じでしょうか。
導入
MQTTを扱うサーバ(MQTTブローカーというらしい)は色々あるようですが、今回はVerneMQを使用します。 vernemq.com
パッケージをダウンロードしてインストール。
今回はさくらのVPS上に導入しますのでRedHat用のパッケージを。
・・・なんですが、0.15.2のダウンロードリンクがなぜかsrc.rpmになっているのでURLを一部書き換える必要があります。(12/25現在)
設定
VerneMQの設定ファイルは次のところにあります。
- /etc/vernemq/vernemq.conf
とりあえず動かすところを目標にしているので匿名ユーザーの接続をOKにします。
※実際にはVPN経由でしか繋がらない様にファイアウォールでポートふさいでいます。
allow_anonymous = on
次に使用するポートの設定
listener.tcp.default = 0.0.0.0:1883 listener.ws.default = 0.0.0.0:8888
後は初期値のまま。
起動
sudo vernemq start
起動すると、ulimit -n の値が小さいと警告が出るので、値を変更して再起動。
- /etc/security/limits.conf
vernemq soft nofile 65536 verne hard nofile 65536
※一時的に変更する場合は次のコマンドを実行
/sbin/sysctl -w fs.file-max = 65536
設定確認
次のコマンドを実行します。
sudo vmq-admin listener show
+------+-------+-------+-----+----------+---------+ | type |status | ip |port |mountpoint|max_conns| +------+-------+-------+-----+----------+---------+ | vmq |running|0.0.0.0|44053| | 10000 | |mqttws|running|0.0.0.0|8888 | | 10000 | | mqtt |running|0.0.0.0|1883 | | 10000 | +------+-------+-------+-----+----------+---------+
1883番と8888番ポートが開いて使えるようになりました。
動作確認
さくっと既製のクライアントを使用して動作を確認します。
Paho - Open Source messaging for M2M
ダウンロードしたファイルを解凍して起動します。
Connectionの設定
Server URIの欄は、tcp://IPアドレス:1883 と入力し、「Connect」ボタンをクリックして接続
StatusがConnectedになればOKです。
Subscriptionの設定
「+」ボタンをクリックすると図の様にTopicとQoSを入力できるようになります。
Topicは任意の値を入力(今回はtestにしました)、QoSは0 - At Most Onceを選択し、「Subscribe」ボタンをクリックします。
左側のHistoryタブにSubscribedと出ればOKです。
メッセージの発行
では実際にメッセージを発行します。
TopicはSubscriptionで設定した値(test)を入力し、Messageに任意の文言を入力したら、「Publish」をクリックします。
History欄にPublishedとReceivedのメッセージが出ています。
(今回発行と購読が一緒のマシンなので両方出ます)
Last Message欄をみると、メッセージがちゃんと受信できています。
無事動作できているようです。
次回は実際にコード書いて同様の動きを試してみます。