LoginSignup
1
3

More than 5 years have passed since last update.

MQTTでPublishしてしまったメッセージを取り消したい/なかったことにしたい/キャンセルしたい

Posted at

Publishしてしまった!しかもqos=1 or 2で!

さらに、retain=true、MQTT初心者だった私は当時パニックになりました
試しにMQTTを触っていた私は、思わぬ動作を引き起こし、ついついやってしまったということです
 #正直コレ自体は正しい使い方をすれば優れた機能で、間違っていません
  間違っていたのは私の理解と使い方です

publishってなぁに?
subscribeってなぁに?
qosってなぁに?
qos levelってなぁに?(1 or 2 or 3)
retainってなぁに?
仕組みが分かっていないプロパティは使うものじゃないよね、というお話

あ、間違えてPublishしちゃった。。。

公式Doc

#publish('dummy/topic', payload = '{ "message": "hello!"}', retain = true, qos = 1)

これでメッセージがMQTTブローカーに保存され、subscribeする側は、
永遠に同じメッセージが取得出来ます
でも、使い方によってはこれじゃ困る!qos=0でいいし、読み捨てたい!

そう思ったらこれ!

誤って保存されてしまったメッセージを取り消す

#publish('dummy/topic', payload = '', retain = true, qos = 1)

同じTopicに、同じqos levelで、payloadを空でPublishすることで
MQTTブローカーに保存されてしまったメッセージを削除することができます
 #知らないと意外とハマる

感想

わからないモノ(APIやフレームワークのメソッドやOSSライブラリも)は、理解するまで使うべからず
使って、やっちゃったら、自分の責任ということを忘れるべからず

1
3
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
1
3