Det korte svar
Idempotens betyder, at den samme operation kan gentages uden at skabe en ny effekt hver gang. I et ordreflow bør et genforsøg med samme forretningsreference derfor ikke oprette endnu en ordre.
Hvorfor et timeout ikke betyder, at intet skete
Forestil jer, at integrationen beder ERP-systemet oprette en ordre. ERP opretter ordren, men svaret går tabt. Integrationen ser kun et timeout. Hvis den blot sender en ny oprettelse, kan der komme to ordrer ud af én kundebestilling.
Microsofts vejledning om genforsøg fremhæver betydningen af at vurdere operationens idempotens. Den praktiske pointe er at skelne mellem ingen handling og ukendt resultat. Ved ukendt resultat skal løsningen kunne finde den tidligere handling eller gentage den sikkert.
Brug en stabil reference for den samme hensigt
Opret en reference, der identificerer den konkrete forretningsoperation, og bevar den ved genforsøg. En tilfældig ny reference for hvert forsøg hjælper ikke. Referencen skal være afgrænset, så en legitim ny ordre ikke afvises som gentagelse.
Gem også det relevante input eller en kontrol af, at det ikke er ændret. Hvis samme reference bruges med et andet beløb eller andre linjer, bør løsningen afvise konflikten eller kræve en særskilt ændringsproces.
| Situation | Forventet adfærd |
|---|---|
| Samme reference og samme input | Returnér eller find tidligere resultat |
| Samme reference, ændret input | Stop og vis konflikten |
| Ny forretningsoperation | Ny reference og normal kontrol |
| Ukendt resultat efter timeout | Afstem før usikker gentagelse |
Beskyttelsen skal holde ved samtidighed
To processer kan læse, at en reference ikke findes, og begge forsøge at oprette den. Derfor er et almindeligt opslag efterfulgt af oprettelse ikke altid tilstrækkeligt. Den endelige entydighed bør håndhæves atomisk i det system, der ejer operationen, hvis det understøttes.
Hvis modtagersystemet ikke tilbyder idempotente kald, skal integrationens design beskrive, hvordan referencer og afstemning bruges, og hvilke fejlscenarier der fortsat kræver manuel kontrol. Et lokalt register alene er ikke en garanti for præcis én effekt i et eksternt system.
Test fejl på de ubelejlige tidspunkter
Test før afsendelse, efter oprettelse men før svar, og under to samtidige genforsøg. Kontrollér antallet af faktiske forretningsposter i modtagersystemet. En vellykket loglinje beviser ikke, at der ikke ligger en dublet.
Aftal også, hvor længe referencer bevares. Gamle beskeder kan blive genafspillet efter en fejl. Driftsproceduren skal beskrive, hvordan teamet undersøger et ukendt resultat og undgår at klikke opret igen uden grundlag.
Brug det i praksis
Jeres næste skridt
- Brug samme operationsreference ved genforsøg.
- Kontrollér at input stemmer med referencen.
- Håndhæv entydighed i det system, der kan garantere den.
- Test timeout efter udført handling og samtidige forsøg.
- Dokumentér afstemning af ukendte resultater.
Ofte stillede spørgsmål
Er idempotens det samme som at ignorere alle dubletter?+
Nej. Den samme operation skal have samme effekt, mens nye legitime operationer stadig skal udføres.
Kan vi bare deaktivere genforsøg?+
Det kan give mistede opgaver ved midlertidige fejl. Løsningen bør kombinere sikre genforsøg med afstemning.
Hvor skal referencen gemmes?+
Der, hvor den kan knyttes pålideligt til operationen og dens resultat. Mulighederne afhænger af modtagersystemets API og datamodel.
Kilder og faglig baggrund
De praktiske eksempler og tjeklister er udarbejdet til denne guide. Følgende kilder uddyber de angivne faglige begreber.
Teknisk baggrund om genforsøg, midlertidige fejl og idempotens.
Begreber i guiden
Fra guiden til jeres arbejdsgang
Se hvilke oplysninger, adgange og kontroller der skal afklares, før jeres systemer forbindes.
Brug skabelonen
Saml jeres egne oplysninger i et arbejdsgrundlag, som kan udfyldes og downloades.
Udgivet af Norstream med AI-assisteret udarbejdelse. Eksempler er illustrative, medmindre andet er angivet. Tilpas metoder og kontroller til jeres systemer og faglige ansvar.
Har du en rettelse eller et spørgsmål?