Garantier för meddelandeleverans
Orleans garantier för meddelandeleverans är som standard högst en gång. Om du har konfigurerats för att göra återförsök vid timeout kan Orleans du i stället tillhandahålla leverans minst en gång.
Mer detaljerat:
- Varje meddelande i Orleans har en automatisk tidsgräns (den exakta tidsgränsen kan konfigureras). Om svaret inte tas emot i tid bryts den returnerade Task med ett timeout-undantag.
- Orleans kan konfigureras för att göra automatiska återförsök vid timeout. Som standard gör den inte automatiska återförsök.
- Programkod kan naturligtvis också välja att göra återförsök vid tidsgränsen.
Om systemet Orleans har konfigurerats för att inte göra automatiska återförsök (standardinställning) och programmet inte skickas igen – Orleans ger leverans av meddelanden högst en gång. Ett meddelande levereras antingen en gång eller inte alls. Det kommer aldrig att levereras två gånger.
I systemet med återförsök (antingen av körningen eller av programmet) kan meddelandet komma flera gånger. Orleans för närvarande inte gör något för att durably lagra vilka meddelanden som redan kommit och undertrycka den andra leveransen. (Vi tror att detta skulle vara ganska kostsamt.) Så i ett system med återförsök Orleans garanterar INTE högst en gång leverans.
Om du fortsätter att försöka igen på obestämd tid kommer meddelandet så småningom att komma fram, vilket ger leveransgarantin minst en gång. Observera att "kommer så småningom" är något som körningen måste garantera. Det kommer inte gratis bara av sig själv även om du fortsätter att försöka igen. Orleans ger slutlig leverans eftersom korn aldrig hamnar i något permanent feltillstånd och ett misslyckat korn så småningom återaktiveras på en annan silo.
Så för att sammanfatta: i systemet utan återförsök Orleans garanterar leverans av meddelanden högst en gång. I systemet med oändliga återförsök Orleans garanterar du minst en gång (och garanterar inte högst en gång).
Viktigt!
I den Orleans tekniska rapporten nämnde vi av misstag bara det andra alternativet med automatiska återförsök. Vi glömde att nämna att som standard utan återförsök ger Orleans leverans högst en gång.