LoginSignup
5
5

More than 5 years have passed since last update.

【MQTT学習】JSONRPCをMQTT Brokerを使って実行するデモgem書いた

Posted at

MQTT学習

なんとなく気になっていたので、JSONRPCをMQTT Broker経由して
Publish/Subribeできないかな、ってためのデモgemを書いた。

json_rpc_over_mqtt_example

名前が地味である。

インストール

> gem install json_rpc_over_mqtt_example

Publish/Subcribeを試す

有名なMQTT Brokerであるmosquittoをインストールし、mosquitto_sub/mosquitto_pub 各コマンドを利用することにした。

Mac OS Xでのインストール/起動

homebrewで一発

> brew install mosquitto
> launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mosquitto.plist

JSONRPCテスト用サーバの起動

> json_rpc_over_mqtt_server

Subscriberの起動

json_rpc_over_mqtt_serverでデフォルトで設定してあるclientというTOPICでメッセージ受信待ちをするために、mosquitto_subを使う

> mosquitto_sub -h localhost -t client

PublisherによるJSONRPC メッセージ送信によるメソッド実行

mosquitto_pubを使い、JSON形式のメッセージを流して、
JSONRPC Over MQTT Exampleで用意してあるメソッドを叩いてみる。

用意してあるメソッド一覧はこちら

今回は時間を聞いてみることにした。

  • Publisher
> mosquitto_pub -h localhost  -t server -m '{"jsonrpc": "2.0", "id": 1000, "method": "what_time_is_it?"}'
  • Subscriber(mosquitto_sub)
> {"jsonrpc":"2.0","id":1000,"result":"2014-12-31T10:03:25+09:00"}
  • json_rpc_over_mqtt_server
> I, [2014-12-31T10:03:25.099352 #88576]  INFO -- : TOPIC: server MESSAGE:{"jsonrpc": "2.0", "id": 1000, "method": "what_time_is_it?"}

うむ、うまく行っている。

やってみて

まあ、いいんじゃない?って思った。地味な感じ。
知り合いからJSONRPCがいいと思ってるんですよ、とか聞いてたり、
過去にJSONRPCをRedisのPub/Sub使ってサービスに実装してたな、とか思い出したのでMQTTの学習の一環として書いてみた。
MQTT Brokerの使い方の練習になってる感じだけど。

こういう記事もあるし。REST以外の手段は、と...
RESTの代替は必要か

RubyのMQTT client(ruby-mqtt)はQOS 0のみサポートという点と、
MQTT Brokerへの再接続はしないとのことだ。

他の言語によるMQTTライブラリを使うと、実行の信頼性の高いJSONRPC実行環境を作れるのかな。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5