At-least-once配信
メッセージングの保証の一つ。メッセージは少なくとも1回は届くが、複数回届くこともある。コンシューマーは重複を扱えなければならない(冪等な処理)。exactly-onceより単純なため、ほとんどのキューシステム(Kafka、RabbitMQ、SQS)の既定になっている。
at-most-once(失われうるが重複はない)や、悪名高く難しいexactly-onceとは別物だ。信頼性のある配信が得られる代わりに、重複排除の負担がコンシューマーに移る。
冪等性キーは、メッセージごとに一意のIDを付け、コンシューマーがDBで重複を弾く方式。Kafkaは既定がat-least-onceで、exactly-onceのセマンティクスはトランザクショナルプロデューサーと冪等コンシューマーのパターンで選択できる。実例では、決済システムはat-least-onceと冪等性キーを組み合わせる(Stripe APIはIdempotency-Keyヘッダーを要求する)。SagaパターンとOutboxパターンが助けになる。