持続的なセッションとメッセージキューイング - MQTTの基礎

バイ Ponlakshmi


MQTT Persistent session

クライアントが切断した後、MQTTブローカーは、そのクライアントのために新しいメッセージを格納することができます知っていますか? クライアントのリコネクトとして、メッセージは急速に送信されます。MQTTの特長 持続的なセッションとメッセージのキューイングこの機能の名前はMQTTの特長. . この投稿では、どのように記述するかを説明します パフォーマンス もっと詳しく見ていきましょう。

MQTT 持続セッションまたはクリーンセッション

MQTTの特長パーシステント セッション以前に述べたように、 expiry インターバルは、セッションがいつまで保存されるべきかを明示します。 切断。 次のシナリオを検討してください。 あなたが2を持っていることを仮定MQTTクライアントそれは両方です 接続するMQTTブローカーお問い合わせ 一方、MQTT クライアントはトピックに公開され、他のクライアントはそれを購読します。 サブスクライブクライアントの場合 から切断する ブローカーは予想外に、それが再接続するまで、そのトピックに公表されたメッセージを受信しません。


ブローカーに接続すると、永続セッションまたはクリーンセッションフラグを使用して、これを解決します。 問題。 クライアントがブローカーに接続すると、クライアントは永続的なセッションを要求するオプションを持っています。 ザ・オブ・ザ・ ブローカー クライアントの情報を追跡するだけでなく、購読されるトピック。 ブローカー お問い合わせ クライアントが切断後に再接続したときに、クライアントにすべての未処理のメッセージを送信します。

クリーンセッションの設定

クライアントがブローカーに接続すると、クライアントは、設定することで永続的なセッションを作成することができます CleanSession フラグを False にフラグします。 この設定はデフォルトで True に設定されます。 持続的なセッションストアで何かを把握しましょう。


  • セッションの存在(サブスクリプションなしでも)。
  • クライアントの全サブスクリプション。
  • クライアントは、1つまたは2つのフローですべてのメッセージがまだ確認されていないサービスレベル(QoS)の品質。
  • 新着情報QoSについて 1または2つのメッセージは、クライアントが切断中に見逃したメッセージです。
  • すべてQoS 2の特長お客様から受けたメッセージは、まだ完全ではありません。

清掃セッションはいつ使うべきか?

クライアントが持っているトピックからメッセージのすべての(または/およびほとんどすべて)を受け取る必要があるとき 購読済みおよび インターネットは信頼できず、持続的なセッションを使用することが重要です。

持続的なセッションによって処理されるクライアント・サイド・アクションは?

クライアント側の持続的なセッションの処理を見てみましょう。 MQTT の持続的なセッションを望み、 ブローカー 私は望む 持続的なセッションCONNACK パケット, セッションの永続性と呼ばれる小さなフラグがあり、ブローカーはあなたにとして伝えます ブローカーがクライアントとしてあなたを思い出させるか、ブローカーが最初に接続していると確信している場合 時間。 そしてこれ クライアント側の便利な方法で、退会が必要なかどうかを判断できます。MQTT トピックまたは ブローカーがすでにあなたについての情報を持っている場合. そこで、これは、見ているもの、そしてほとんどのライブラリです。 確認できる セッションをクリーンにするために作成する MQTTクライアントそれは弾力性です。

メッセージキューイング

その後、MQTT に一意のメッセージキューイングがあります。 このメッセージを使用して、クライアントごとにキューに入れることができます。 永続的なセッションクライアントのみ、メッセージキューイングを使うことができます。 アクティブなサブスクリプションと ブローカーから切断される持続的なセッションクライアントは、ブローカーはすべてをキューしますサービスの質(QoS 1か2)切断中に逃したメッセージ。 これは、しばらくの間接続されていない場合は、 再接続, ブローカーは見逃したメッセージを受け取るので、クライアント側で接続している場合でも、 最新の最新情報 情報を見逃しなく。 なので、これは本当に素晴らしいですが、あなたはここに持続的なセッションが必要です あなたが使用する必要があります サービスの1つまたは2つのメッセージの質のここに。 メッセージをメッセージに留めておくサービスの質 ゼロの決してキューに入れられません。


持続的なセッションとメッセージのキューイングを既に議論しました。 MQTTブローカーがMQTTブローカーであれば可能です 期限が切れていない セッション、持続的なセッション、またはキュー、サービス攻撃の拒否に敏感です。 ですから、 お問い合わせ 専門のプロジェクトは、すべての重要な操作を支えるMQTTを、確かめます 設定。

プロトコルの詳細については、