Ich habe Probleme, eine Möglichkeit zu finden, die Nachrichtenebene in SpringAMQP zu verzögern. Ich rufe einen Webservice auf, wenn der Dienst nicht verfügbar ist oder wenn er eine Ausnahme auslöst. Ich speichere alle Anfragen in der RabbitMQ-Warteschlange und versuche den Serviceaufruf solange, bis er erfolgreich ausgeführt wird. Wenn der Dienst einen Fehler anzeigt oder nicht verfügbar ist, führt der RabbitMQ-Listener eine Schleifenbildung durch (bedeutet, dass der Listener die Nachricht abruft und einen Dienst aufruft, falls ein Fehler auftritt)SpringAMQP-Verzögerung
Ich beschränkte die Schleifenbildung auf X Stunden mit MessagePostProcessor Ich wollte jedoch die Verzögerung auf Nachrichtenebene und bei jedem Zugriff auf den Dienst aktivieren. Zum Beispiel 1. versuchen Sie 3000ms Verzögerung und zweiten Mal 6000ms so weiter, bis ich x Zeit versuchen.
Es wäre großartig, wenn Sie ein paar Beispiele bereitstellen.
Könnten Sie mir bitte eine Idee dazu geben?
Ok. Sieht interessant aus, aber ich finde es als Overhead, die volle Reise zum Broker zu machen, nur um es erneut zu versuchen ... –
Ja, aber auf diese Weise verlieren wir keine Nachrichten und die Wiederholung wird fortgesetzt bis x Minuten, dann verschiebe die Nachricht nach a andere Warteschlange – sea
Wir verlieren sie auch nicht mit Spring Retry, nur weil wir es nicht auf Broker anerkennen. Und ja, wir können es auch an verschiedene Warteschlangen senden. Siehe Dokumentation, auf die ich in meiner Antwort hingewiesen habe. –