【アットレーストワンスはいしん】

At Least Once配信 とは?

💡 「絶対届ける」を優先して、ダブり覚悟で何度でも送る宅配便
📌 このページのポイント
At Least Once配信:必ず届くが重複あり Producer (送信側) Consumer (受信側) メッセージ①(正常) メッセージ①(再送・重複) 確認タイムアウト → 再送実行 冪等性で重複を スキップ ✓ 消失なし保証 (重複あり) 障害時は再送されるため同一メッセージが複数回届く可能性がある
At Least Once配信:メッセージは必ず届くが重複することがある
ひよこ ひよこ

At Least Once配信ってどういう意味なの?

ペンギン先生 ペンギン先生

「最低でも1回は必ず届ける」という配信の約束だよ。メッセージが消えることはないけど、同じメッセージが2回以上届くことはあるんだ。

ひよこ ひよこ

なんで2回届いちゃうの?

ペンギン先生 ペンギン先生

たとえば送信後にネットワークが切れて「届いたか確認できない」となったとき、安全のためにもう一度送り直すんだよ。そのあと最初のメッセージも届くと重複になるね。

ひよこ ひよこ

じゃあ受け取る側はどうしたらいいの?

ペンギン先生 ペンギン先生

同じメッセージを何度受け取っても結果が変わらない「冪等性」を実装するんだよ。たとえばメッセージIDを保存しておいて、すでに処理済みなら無視するという方法が一般的だね。

ひよこ ひよこ

どんなシステムで使われているの?

ペンギン先生 ペンギン先生

KafkaやAmazon SQSデフォルトでAt Least Once配信を採用しているよ。「絶対に失わない」ことが優先される注文処理やログ収集でよく使われるんだ。

ひよこ ひよこ

Exactly Once配信と何が違うの?

ペンギン先生 ペンギン先生

Exactly Onceは厳密に1回だけ届けることを保証するけど、実現するためにトランザクション管理などの仕組みが必要でコストが高くなるんだ。At Least Onceのほうがシンプルで高速な場合が多いよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「At Least Once」って出てきたら「重複あり・必ず届く配信保証」と思えればだいたいOK!
📖 おまけ:英語の意味
「At Least Once Delivery」 = 少なくとも1回の配信
💬 「少なくとも(at least)1回(once)」届けるという意味で、届かないよりも重複するほうがましという設計思想から来ているんだよ
← 用語集にもどる