かなりマニアックな内容なので、恐らく私しか興味がない記事なのですが、自分への備忘録として残しておきます。
ハマりポイント
paho-mqttでMQTTv5の通信を試そうとしたら「AssertionError」が発生してハマりました。
原因
環境によって様々だと思いますが、私のケースでは以下。
Ubuntu 18.04のデフォルトリポジトリのmosquittoがv5対応していない
私はUbuntu 18.04のmosquittoをMQTTブローカーとして使っていたのですが、どうやらこのバージョンはMQTTv5に対応していないっぽいです。
自分はひたすら自分の(ネットから拾った)サンプルコードでAssersionErrorが出てコードが原因だと思いこんで四苦八苦していたのですが、そもそもmosquitto-clientでMQTTv5を試してもうまく行かなかったので、mosquittoのバージョンを上げることにしました。
mosquitto 2.0.10でもうまく行かなかったのでEMQに変更・・・成功
で、mosquitto 2.0.10に変更したのですが、それでも「Authorization Failed」に引っかかってSub/Pubができない。
最終的に以下の記事にたどり着いてDocker上にEMQを稼働させることに。
後はあっさりとPub/Subが動作。Wiresharkでパケット確認してMQTTv5のペイロードも確認。
MQTTv5ってまだまだメジャーじゃないんかな?ネット上でも情報がとても少ない。
というわけで、はじめからEMQ使ってたら良かったって話です。
ちなみに、MQTTv5で新たに実装されたProperties周りの情報(とPythonのサンプルコード)は以下のページが一番詳しかった。
便利になったのかややこしくなったのか・・・
コメント