Wie konfiguriert man MassTransit, um vor dem Fehlschlagen einen erneuten Versuch durchzuführen, z. B. wenn der RabbitMQ-Server vorübergehend nicht verfügbar ist?Wie konfiguriere ich MassTransit, um context.Publish() im Falle eines Fehlers erneut zu versuchen?
Wie konfiguriere ich MassTransit, um context.Publish() im Falle eines Fehlers erneut zu versuchen?
Antwort
Das Problem mit der Wiederholung in diesem Zusammenhang ist, dass der einzige echte Grund ein Publish
Aufruf fehlschlagen würde, wenn die Broker-Verbindung verloren ging (aus irgendeinem Grund: Netzwerk, etc.).
In diesem Fall ist die Verbindung, die zum Empfangen der Nachricht verwendet wurde, ebenfalls verloren, was bedeutet, dass ein anderer Knoten, der mit dem Broker verbunden ist, die Nachricht möglicherweise schon abgeholt hat. Eine Wiederholung in diesem Fall wäre also schlecht, da sie sich wieder mit dem Broker verbindet und sendet, aber dann konnte die Nachricht nicht bestätigt werden (da sie wahrscheinlich von einem anderen Thread/Worker abgeholt wurde).
Die übliche Vorgehensweise ist hier, dass es fehlschlägt, und wenn der Empfangsendpunkt die Verbindung wieder herstellt, wird die Nachricht erneut an einen Verbraucher gesendet, der dann Publish
aufruft und das gewünschte Ergebnis erreicht.
Sie sollten sicherstellen, dass Ihr Consumer dies (Suche nach idempotent) richtig umgehen kann, um einen Fehler zu vermeiden, der eine Unterbrechung in Ihrer Geschäftslogik verursacht.
- 1. Rerun Cucumber Schritt nur im Falle eines spezifischen Fehlers
- 2. Wie setze ich Rollback im Falle eines Fehlers in Talend?
- 3. Wie kann man einen Beobachter im Falle eines Fehlers wiederverwenden?
- 4. Wie kann Apache im Falle eines PHP-Fehlers 500 senden?
- 5. Wiederholen Sie eine SQL-Abfrage im Falle eines Fehlers im Batch
- 6. Erkennen von Fehlern und Erstellen eines Berichts im Falle eines Fehlers beim Schütteln
- 7. Wo kann ich Fehlerdetails für Azure Data Lake-U-SQL-Jobs im Falle eines Fehlers sehen?
- 8. So verwenden PubNub Rückruf veröffentlicht die Nachricht, um herauszufinden, neu zu veröffentlichen, im Fall eines Fehlers
- 9. Wie Client wird die Verbindung im Falle eines Fehlers von IP des HA-Proxy
- 10. So planen Sie einen Job in Android im Falle eines Fehlers mit Job-Scheduler
- 11. SVN. Interaktive Konfliktlösung erneut versuchen
- 12. Apache Camel im Falle eines Fehlers von der Route trennen und weiterleiten
- 13. Wie konfiguriere ich Mercurial, um bestimmte Konfigurationsdateien nicht zu übertragen?
- 14. Wiederholen Sidekiq im Falle eines Fehlers, aber von einem Punkt, wo der Fehler aufgetreten ist
- 15. Exit-Methode im Falle eines API-Fehlers und mit anderen Methoden fortfahren
- 16. Welche Art von JSON sollte von dem Server im Falle eines Fehlers in angular2 zurückkehren
- 17. Gemeinsame Daten im Falle eines Neustarts behalten?
- 18. Verwenden von Polly, um nach HttpStatusCode.Unauthorized erneut zu versuchen
- 19. eine Fehlerreaktion im Falle eines Null-Modell
- 20. SVN Repository Migration im Falle eines Serverausfalls
- 21. Im Falle eines Serverabsturzes gehen Warteschlangendaten verloren
- 22. So fragen Sie RabbitMQ, erneut zu versuchen, wenn eine Geschäftsausnahme im Spring Asynchronous MessageListener-Anwendungsfall auftritt
- 23. ausgelöst Ausnahme im Falle eines gleichzeitigen Dateizugriffs mit StreamReader
- 24. Wie konfiguriere ich Github, um mit Concourse CI zu arbeiten?
- 25. Wie konfiguriere ich Go, um einen Proxy zu verwenden?
- 26. Wie konfiguriere ich StructureMap, um ein generisches Repository zu verwenden?
- 27. Wie konfiguriere ich meine webpack.config.js, um diese Abhängigkeiten zu extrahieren?
- 28. Wie konfiguriere ich IntelliJ/Gradle, um dagger 2.0 zu verwenden
- 29. Wie konfiguriere ich nginx + Unicorn, um Timeout-Fehler zu vermeiden?
- 30. IPN Delivery Status Erneut versuchen