クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

パブリッシュ・サブスクライブとは

このレッスンのあとで: パブリッシュとサブスクライブの仕組みを説明し、トピックフィルタで選ぶことができる。

55分のレッスンコマンド3件MQTT メッセージングラボ:機器がブローカーと話す仕組みをブラウザーで

パブリッシュとサブスクライブとは何ですか

パブリッシュ・サブスクライブとは、送る側と読む側が、ブローカーを通してメッセージをやり取りする方式です。送る側は、読む側が誰かを知りません。

このレッスンでは、トピックフィルタで読みたいメッセージだけを選び、条件に合うものを仕分けます。

このレッスンのゴール

メモ

パブリッシュとサブスクライブの仕組みを説明し、トピックフィルタで選ぶことができる。

キーワード

ことばいみれい
パブリッシュトピックを付けて、ブローカーへ送ること
サブスクライブ読みたいトピックを、ブローカーに伝えること
トピックフィルタ読むトピックを選ぶ、パターンの書き方home/+/temperature
ワイルドカードフィルタの中で、複数のトピックに合う記号+
保存メッセージブローカーが最後の1件を覚えておく設定

学生が入力するセルは、このプレビューでは空白です。

送る側と読む側は互いを知らない

センサーは、トピックを付けて、ブローカーに送ります。これがパブリッシュです。読みたい側は、トピックをブローカーに伝えておきます。これがサブスクライブです。

ブローカーは、トピックが合う読み手に、メッセージを渡します。読み手を増やしても、センサーは変えなくて済みます。

トピックフィルタで読むものを選ぶ

+ は、1つの階層だけに合います。home/+/temperature は、どの部屋の気温にも合います。

# は、そこから下のすべての階層に合います。home/# は、home の下のすべてです。# は、フィルタの最後にだけ置きます。

部屋ごとの気温を4件読む

コマンド
docker exec broker mosquitto_sub -t 'home/+/temperature' -v -C 4 -W 10

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

合うトピックだけが出る

4行が出ます。どの行も、home/kitchen/temperature か home/livingroom/temperature で始まり、値は整数です。

湿度とドアは、フィルタに合わないので、1行も出ません。並ぶ順番と値は、押した時刻で変わります。

フィルタが合うかどうかの表

フィルタhome/kitchen/temperaturehome/door/state
home/+/temperature合う合わない
home/door/+合わない合う
home/#合う合う
home/kitchen合わない合わない

学生が入力するセルは、このプレビューでは空白です。

保存メッセージは遅れて読む人にも届く

普通のメッセージは、読んでいる人にだけ届きます。あとから読み始めた人は、次のメッセージまで待ちます。

保存メッセージは、ブローカーが最後の1件を覚えます。読み始めた人は、すぐにそれを受け取れます。次のメッセージが来ると、置きかわります。

自分のメッセージを保存つきで出す

コマンド
docker exec broker mosquitto_pub -t home/memo/shelf -r -m ready

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

保存したメッセージを読む

コマンド
docker exec broker mosquitto_sub -t home/memo/shelf -v -C 1 -W 3

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

自分のメッセージは毎回同じ

最初の Run は、何も表示しません。2つ目の Run は、いつも home/memo/shelf ready を出します。自分が出した最後の1件だからです。

-r を付けないと、だれも読んでいない間に送ったメッセージは消えます。

よくある間違い

注意

「読み手が、センサーに値を聞きに行く」と考える人が多くいます。聞きには行きません。センサーは好きなときに送り、ブローカーが、そのときの読み手に渡します。

このラボとソースについて: MQTT メッセージングラボ:機器がブローカーと話す仕組みをブラウザーで

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。