web-dev-qa-db-ja.com

メッセージの順序はMQTTメッセージで保持されますか?

メッセージ送信済みの注文が保持されるのでしょうか。つまり、パブリッシャーが一連のメッセージを送信する場合、各サブスクライバーは、パブリッシャーが送信したのと同じシーケンスを受信することが保証されますか?クリーンなセッションと永続的なセッションのどちらですか?

26
Kar

MQTT 3.1.1のメッセージ順序付け機能の概要は、仕様自体 here にあります。

要約すれば:

  • 異なるQoS値で公開されたメッセージの相対的な順序については保証されません。 (たとえば、QoS 0は、後者の4つのパケットではなく単一のパケットを含むため、QoS 2を引き継ぐことができます)。
  • QoS 0メッセージは順番に配信されます(メッセージが失われる可能性があります)
  • QoS 2メッセージは順番に配信されます
  • QoS 1はメッセージの重複を許可します-公開された次のメッセージの最初のインスタンスが後に(== --- ==)到着する可能性があります。

クライアント/ブローカーが実行中の単一のメッセージのみを許可する場合は、QoS 1の順序を保証できます。

37
knolleary