At-Least-Once Delivery
少なくとも一度の配信
少なくとも一度の配信は、メッセージが失われないようにしますが、同じメッセージが複数回届く場合があります。コンシューマは繰り返しを安全に処理する必要があります。
deliver -> process -> acknowledge/delete; missing acknowledgement -> redeliver; event ID -> dedupeevt_784deliver -> process -> acknowledge/delete; missing acknowledgement -> redeliver; event ID -> dedupeJOBもう一つの例
ワーカーはレシート `evt-42` を保存しますが、Amazon SQSメッセージを削除する前に停止します。SQSは後で同じメッセージを再び配送します。次のワーカーは保存されたイベントIDを確認し、2つ目のレシートを作成する代わりに既存のレシートを返します。
主な部分
- 01安定メッセージID
- 02配信試行
- 03ワーカーによって作成された結果
- 04承認または削除
- 05再配達パス
- 06重複レコード
以下の場合に使用します
仕事を一度失う方が二度処理するよりも悪い場合、このルールを使用してください。すべてのメッセージに安定したIDを付与します。繰り返しのメッセージは、二重に課金、メール送信、保存されてはいけません。
以下の場合は使用しないでください
配信は作業が成功したことを意味しません。正確に1つの結果を約束しないでください。料金や外部の操作には独自の重複防止が必要です。
コードで使用する名前
deliver -> process -> acknowledge/delete; missing acknowledgement -> redeliver; event ID -> dedupe 出荷前に
Check contracts and invariants, authorization, and input limits. Test retries, one-time effects, timeouts, and partial failures. Verify data integrity, compatibility, monitoring, recovery, and rollback.
Outcome:Complete the task with 少なくとも一度の配信 (At-Least-Once Delivery)。 User context:ワーカーはレシート `evt-42` を保存しますが、Amazon SQSメッセージを削除する前に停止します。SQSは後で同じメッセージを再び配送します。次のワーカーは保存されたイベントIDを確認し、2つ目のレシートを作成する代わりに既存のレシートを返します。 Technical concept or control:少なくとも一度の配信 (At-Least-Once Delivery)。 Why it fits:仕事を一度失う方が二度処理するよりも悪い場合、このルールを使用してください。すべてのメッセージに安定したIDを付与します。繰り返しのメッセージは、二重に課金、メール送信、保存されてはいけません。 Do not use it when:配信は作業が成功したことを意味しません。正確に1つの結果を約束しないでください。料金や外部の操作には独自の重複防止が必要です。 Engineering requirements: Define inputs, outputs, contracts, and rules that must always hold. Set authorization and input checks. Define failures, timeouts, retries, one-time effects, data moves, and compatibility limits. Operations: Add useful signals and logs that hide sensitive data. Set capacity limits and write an operator guide. Test recovery and rollback. Acceptance criteria: Contract and failure-path tests pass. Data and authorization rules still hold during retries and partial failures. Check performance limits, monitoring, recovery, and rollback. Evidence and limits (evidence boundary):単一の公式標準が全体の用語を管理するわけではありません。その意味はチーム、プラットフォーム、またはフレームワークによって変わる可能性があります。 Unknowns to confirm: Where the code runs, data stores, traffic shape, consistency needs, and the security boundary. Also confirm the compatibility period, service goals, and rollback limits.
このリクエストを確認する
Review how 少なくとも一度の配信 (At-Least-Once Delivery) is used now. Definition: 少なくとも一度の配信は、メッセージが失われないようにしますが、同じメッセージが複数回届く場合があります。コンシューマは繰り返しを安全に処理する必要があります。 Release checks: Check contracts and invariants, authorization, and input limits. Test retries, one-time effects, timeouts, and partial failures. Verify data integrity, compatibility, monitoring, recovery, and rollback. Before changing code, list the evidence, gaps, severity, and the smallest safe fix.