私は MQTT を初めて使用し、メッセージが発行されたときに決定される QOS レベルの意味について学びました。
- メッセージが 2 回到着するよりも、まったく到着しないことを希望する場合は0
- メッセージを少なくとも1回は受信したいが、2 回 (またはそれ以上) 受信してもかまわない場合は 1
- 2メッセージを 1 回だけ受信する場合。QOS 値が高いほど、転送が遅くなります
加入者側でも「受信する最大 QOS レベル」を設定できることに気付きました。ここから引用:
たとえば、メッセージが QoS 2 でパブリッシュされ、クライアントが QoS 0 でサブスクライブされている場合、メッセージは QoS 0 でそのクライアントに配信されます。
これは、発行元が QOS 2 でメッセージを送信したにもかかわらず、メッセージがクライアント (QOS 0) に届かない可能性があることを意味しますか?
これは、経験の浅い開発者にとって大きな問題になる可能性があります。たとえば、npm mqtt パッケージのサブスクライブ機能のデフォルトの QOSは 0 です! (私の意見では、デフォルトは最大値 2 である必要がありました。つまり、「発行元に QOS を決定させる」)。