【アットレーストワンスはいしん】
At Least Once配信 とは?
💡 「絶対届ける」を優先して、ダブり覚悟で何度でも送る宅配便
📌 このページのポイント
- メッセージが必ず1回以上届くことを保証する配信セマンティクス
- 障害時にメッセージが重複して配信される可能性がある
- 受け取り側が同じメッセージを複数回処理しても問題ないよう冪等性が必要
- Kafka・Amazon SQSなど多くのメッセージングシステムがデフォルトで採用
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)」届けるという意味で、届かないよりも重複するほうがましという設計思想から来ているんだよ