Tjekliste
Tjekliste: idempotente message handlers
25 tjek, der gør enhver Azure Service Bus-handler sikker at køre to gange.
Hvem er den til
Til teams, der kører event-drevet .NET på Azure Service Bus (eller en anden at-least-once-broker), og som vil fange dobbelte betalinger, dubletmails og tavse dead-letter-køer, før produktion gør det.
Hvad er der i den
- Leveringsantagelser, du bør skrive ned, før du koder
- Tre deduplikeringsstrategier, og hvornår hver af dem rækker
- Transaktionsgrænsen, der lukker hullet 'udført, men aldrig kvitteret'
- Indstillinger for retry, poison messages og dead-letter, samt den overvågning der gør dem nyttige
Gratis smugkig
Hele tjeklisten har 25 tjek. Her er det første afsnit.
A. Know your delivery guarantees
It is written down that this queue or subscription is at-least-once, and every handler author knows it.
Duplicates are normal broker behaviour, not an incident. Designs that assume exactly-once fail quietly.
The receive mode is a deliberate choice. PeekLock for anything that matters; ReceiveAndDelete only where losing a message is acceptable.
ReceiveAndDelete removes the message before your code runs, so a crash loses it for good.
Lock duration comfortably exceeds your slowest realistic handler run, or lock renewal is on.
An expired lock redelivers a message you are still processing, which gives you two concurrent runs of the same work.
Every message carries a stable identity set by the producer (MessageId or a business key), never generated on receipt.
Deduplication only works if the redelivered copy has the same identity as the original.
Producers reuse the same MessageId when they retry a send, and you have decided whether to enable broker duplicate detection.
Duplicates also enter at the source when a send times out and is retried.
Spørgsmål
- Er den virkelig gratis?
- Ja. Ingen betaling og intet salgsopkald. Du giver mig en e-mailadresse, og PDF’en er din.
- Hvad bruger du min e-mail til?
- Jeg sender en lejlighedsvis besked om lignende ressourcer og nye artikler. Svar “stop”, så fjerner jeg dig.
- Må jeg dele den med mit team?
- Det må du meget gerne. Print den, tilpas den, læg den i jeres wiki. Et link tilbage til siden sætter jeg pris på.