通常、クライアントがパケット/メッセージをその順序で受信するかどうか、および複製が許可されるかどうかについて、強力な保証があるプロトコルを選択する必要があります。
小規模から中規模のメッセージを相互に送信するIoTデバイスのネットワークの場合、Quality of Service 2でMQTTを使用することは、ユースケースによく適合しているようです。HiveMQリンクで述べたように:
最高のQoSは2で、各メッセージが相手側で1回だけ受信されることを保証します。これは最も安全であり、サービス品質レベルが最も遅いです。保証は、送信側と受信側の間の2つのフローによって提供されます。
QoS 2 はメッセージの順序を保持し、前述のとおり、メッセージの重複を防止することに注意してください。
MQTT QoS 2を使用すると、標準のQoS 0(ファイアアンドフォーゲットメッセージに似ています)と比べてかなりのオーバーヘッドがあります。ブローカーに到達しない場合、メッセージは再送信されず、永久に失われます。 )— QoS 2には4つのメッセージ(PUBLISH
送信者、PUBREC
ブローカー、PUBREL
クライアント、PUBCOMP
ブローカーから)が必要であるため、通常は処理に時間がかかり、リソースが多くなります(そのため、制約されたエンドポイントでの無線送信と電力使用量が長くなります)。
MQTT QoS 2メッセージは、ブローカーから確認応答を受信するまで送信者から繰り返し再送信されるだけなので、接続が不完全であっても、メッセージは最終的に通過するはずです。
トピックベースのパブリッシュ/サブスクライブプロトコルがユースケースに適しているかどうかは、あなた次第です。ウィキペディアの記事を参考にするとよいでしょう。