2017-07-25 5 views
2

Wird eine Nachricht aufgrund einer Ausnahme "wiederholt", wird sie physisch in die Warteschlange zurückgegeben? zu Beginn? bis zum Ende? Wird es nach den vorhandenen Nachrichten in der Warteschlange erneut verarbeitet? Wird es im Anwendungsspeicher gehalten?Masstransit State Machine - Retry-Mechanismus

Ich habe keine Beschreibung für den Masstransit Retry Mechanismus Fluss in der Dokumentation gefunden.

Bitte beziehen Sie sich auf jede Dokumentation, die es erklärt, danke.

Antwort

2

MassTransit wird die Nachricht innerhalb derselben Verbraucherlieferung wiederholen - die Wiederholung erfolgt nur in der Lieferpipeline consumer/saga/handler. Im Falle einer Saga wird die Datenbanktransaktion (falls vorhanden) abgebrochen und eine neue Transaktion gestartet - einschließlich eines erneuten Lesens der Saga-Instanz aus der Datenbank.

Die Nachricht wird nicht in die Warteschlange für andere Worker zur Verarbeitung zurückgegeben.

Wenn das Wiederholungsrichtlinienlimit erreicht ist, wird die Nachricht in die Warteschlange _error verschoben.

+0

Wenn ich nicht darauf zähle, dass die Nachrichten in einer bestimmten Reihenfolge kommen und die aktuelle Saga-Lieferpipeline nicht weiterkommen kann, weil der Status nicht den gewünschten erreicht hat, oder sogar noch nicht erstellt wurde, sagen Sie den aktuellen Arbeiter "steckt" in dieser Nachricht fest? Intervall für Wiederholung verwenden - ermöglicht es dem aktuellen Mitarbeiter, in der Zwischenzeit andere Nachrichten zu bearbeiten? –

+0

Wenn Sie sich nicht in einem Zustand befinden, in dem die Nachricht verarbeitet werden soll, sollten Sie eine geplante erneute Zustellung der Nachricht verwenden. Entweder indem Sie eine Nachricht selbst planen oder MassTransit einfach mitteilen, dass Sie die Nachricht erneut versenden möchten, indem Sie eine geplante erneute Zustellung vornehmen. –

Verwandte Themen