Garantien für die Nachrichtenzustellung
Orleans-Garantien für die Nachrichtenzustellung gelten standardmäßig höchstens einmal. Wenn konfiguriert wurde, dass bei einem Timeout Wiederholungsversuche unternommen werden, führt Orleans stattdessen eine mindestens einmalige Zustellung durch.
Ausführliche Informationen:
- Jede Nachricht in Orleans verfügt über ein automatisches Timeout (das genaue Timeout kann konfiguriert werden). Wenn die Antwort nicht rechtzeitig eintrifft, wird die zurückgegebene Task mit einer Timeoutausnahme unterbrochen.
- Orleans kann so konfiguriert werden, dass bei Timeout automatische Wiederholungen durchgeführt werden. Standardmäßig werden keine automatischen Wiederholungsversuche ausgeführt.
- Der Anwendungscode kann außerdem festlegen, dass bei einem Timeout ein neuer Versuch unternommen wird.
Wenn das Orleans-System so konfiguriert ist, dass es keine automatischen Wiederholungsversuche durchführt (Standardeinstellung) und die Anwendung nicht erneut sendet, Orleanswird die Nachricht höchstens einmal zugestellt. Eine Nachricht wird entweder einmal oder gar nicht übermittelt. Sie wird nie zweimal übermittelt.
Im System mit Wiederholungsversuchen (entweder von der Runtime oder von der Anwendung) kann die Nachricht mehrmals eingehen. Orleans macht derzeit nichts, um die bereits eingetroffenen Nachrichten zu speichern und die zweite Zustellung zu unterdrücken. (Wir glauben, dass dies ziemlich kostspielig wäre.) In einem System mit Wiederholungsversuchen garantiert Orleans also nicht einmal die Lieferung.
Wenn Sie den Versuch wahrscheinlich unendlich oft wiederholen, wird die Nachricht schließlich ankommen, sodass eine mindestens einmalige Zustellung garantiert ist. Beachten Sie, dass „irgendwann ankommen“ etwas ist, das die Runtime auch sicherstellen muss. Von alleine passiert dies nicht, auch wenn Sie es immer wieder versuchen. Orleans ermöglicht eine eventuelle Zustellung, da die Grains nie dauerhaft ausfallen und ein ausgefallenes Grain schließlich auf einem anderen Silo wieder aktiviert wird.
Kurz gesagt: Im System ohne Wiederholungen garantiert Orleans höchstens einmal die Nachrichtenzustellung. Im System mit unendlichen Wiederholungsversuchen garantiert Orleans mindestens einmal (und garantiert nicht höchstens einmal).
Wichtig
Im Orleans technischen Bericht haben wir versehentlich nur die 2. Option mit automatischen Wiederholungen erwähnt. Es wurde vergessen zu erwähnen, dass die Standardeinstellung ohne Wiederholungsversuche von Orleans eine höchstens einmalige Zustellung vorsieht.