2017-06-07 1 views

Antwort

2

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.

Verwandte Themen