【あっともすとわんすはいしん】

At Most Once配信 とは?

最終更新:
💡 届く回数は最大1回。届かないこともある

対象のメッセージが受信側へ0回または1回届く配信保証。重複配信を避ける一方、届かない可能性がある。どの送受信区間や処理が保証の対象かを確認する必要がある。

📌 このページのポイント
At Most Once:届くのは0回か1回 届く場合 送信側 受信側 受信1回 メッセージの配信 失われる場合 送信側 消失 受信側 受信0回 MQTTのQoS 0:受信確認・再試行なし
同じメッセージの配信が成功する場合と失われる場合。保証の対象となる送受信区間での回数であり、アプリ全体の処理回数まで保証する意味ではない。
ひよこ ひよこ
最大1回なら、必ず1回は届く?
ペンギン先生 ペンギン先生
0回か1回なので、届かないこともあるよ。保証の対象となる配信では重複しないけれど、メッセージの消失を許容する方式なんだ。
ひよこ ひよこ
MQTTではどう実現しているの?
ペンギン先生 ペンギン先生
QoS 0がAt Most Onceに当たるよ。受信側はMQTTの受信確認を返さず、送信側もMQTTの再試行をしない。届くかどうかは下の通信網の能力にもよるんだ。
ひよこ ひよこ
他の配信保証とはどう違うの?
ペンギン先生 ペンギン先生
MQTTではQoS 1がAt Least Onceで重複を許容し、QoS 2がExactly Onceで重複を防ぐ手順を使うよ。どれも、対象とする送受信区間での保証として読むんだ。
ひよこ ひよこ
Exactly Onceなら注文処理まで全部1回になる?
ペンギン先生 ペンギン先生
配信の保証だけでは、外部の決済やアプリが行う処理全体まで1回と保証できないよ。どこまでが対象で、失敗時に何を再試行するのかを確かめよう。
ひよこ ひよこ
どんなときにAt Most Onceを選ぶの?
ペンギン先生 ペンギン先生
たとえば一部の測定値が欠けても次の測定値で補える用途では候補になるよ。失って困るデータか、必要な処理や確認の負担は何かを見て選ぶんだ。速さを一律に順位付けはできないよ。
もっと詳しく知りたい人へ

MQTTのQoS 0は送信元から購読者まで一つの保証?

MQTT 5.0の配信手順は一つの送信側から一つの受信側への配信を対象にする。クライアントからサーバーへの受信と、サーバーから各購読クライアントへの送信ではQoSが異なり得る。アプリが同じ内容を新しいメッセージとして送る場合も、元の配信とは分けて考える。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「At Most Once配信」って出てきたら「0回か1回届く配信保証」と思えばだいたいOK!
📖 おまけ:英語の意味
「At Most Once Delivery」 = 最大1回配信
💬 At most onceは「多くとも1回」という意味だよ。1回は届く場合だけでなく、0回、つまり届かない場合も含むよ

参考資料

← 用語集にもどる