At-Least-Once Delivery
Consegna almeno una volta
La consegna almeno una volta cerca di impedire che un messaggio venga perso, ma lo stesso messaggio può arrivare più di una volta. Il ricevente deve gestire le ripetizioni in sicurezza.
deliver -> process -> acknowledge/delete; missing acknowledgement -> redeliver; event ID -> dedupeevt_784deliver -> process -> acknowledge/delete; missing acknowledgement -> redeliver; event ID -> dedupeJOBUn altro esempio
Un worker salva la ricevuta `evt-42` ma si ferma prima di eliminare il messaggio Amazon SQS. Successivamente, SQS consegna di nuovo lo stesso messaggio. Il prossimo worker vede l'ID dell'evento salvato e restituisce la ricevuta esistente invece di crearne una seconda.
Parti principali
- 01ID messaggio stabile
- 02Tentativo di consegna
- 03Risultato prodotto dal lavoratore
- 04Riconoscimento o eliminazione
- 05Percorso di ritrasmissione
- 06Record duplicato
Usalo quando
Usa questa regola quando perdere un lavoro è peggio che affrontarlo due volte. Dai a ogni messaggio un ID stabile. Un messaggio ripetuto non deve ricaricare, inviare e-mail o salvare due volte.
Non usarlo quando
La consegna non significa che il lavoro sia riuscito. Non promettere esattamente un risultato. Addebiti o azioni esterne necessitano del proprio controllo dei duplicati.
Nome usato nel codice
deliver -> process -> acknowledge/delete; missing acknowledgement -> redeliver; event ID -> dedupe Prima di spedire
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 Consegna almeno una volta (At-Least-Once Delivery). User context: Un worker salva la ricevuta `evt-42` ma si ferma prima di eliminare il messaggio Amazon SQS. Successivamente, SQS consegna di nuovo lo stesso messaggio. Il prossimo worker vede l'ID dell'evento salvato e restituisce la ricevuta esistente invece di crearne una seconda. Technical concept or control: Consegna almeno una volta (At-Least-Once Delivery). Why it fits: Usa questa regola quando perdere un lavoro è peggio che affrontarlo due volte. Dai a ogni messaggio un ID stabile. Un messaggio ripetuto non deve ricaricare, inviare e-mail o salvare due volte. Do not use it when: La consegna non significa che il lavoro sia riuscito. Non promettere esattamente un risultato. Addebiti o azioni esterne necessitano del proprio controllo dei duplicati. 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): Nessun singolo standard ufficiale controlla l'intero termine. Il suo significato può cambiare tra team, piattaforme o framework. 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.
Controlla questa richiesta
Review how Consegna almeno una volta (At-Least-Once Delivery) is used now. Definition: La consegna almeno una volta cerca di impedire che un messaggio venga perso, ma lo stesso messaggio può arrivare più di una volta. Il ricevente deve gestire le ripetizioni in sicurezza. 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.