Wenn ich mehr als eine @JmsListener
-Methode in einer Spring Boot-Anwendung habe gibt es eine Möglichkeit, explizit entweder Listener zu deklarieren, alle Nachrichten aus der Warteschlange vor dem anderen zu konsumieren?Konfigurieren der Reihenfolge der JmsListener-Ausführung
Mit anderen Worten, wenn ich
@JmsListener(destination = "queueOne")
public void processOrder1(String message) {. . .}
@JmsListener(destination = "queueTwo")
public void processOrder2(String message) {. . .}
haben, ist es Konfiguration zur Verfügung processOrder1()
Lauf zum Abschluss haben, schalten Sie ihn aus, dann processOrder2()
laufen haben? Oder wird processOrder2()
immer nach processOrder1()
ausgeführt (was der Debugger vorschlägt)? Oder laufen sie irgendwie unabhängig voneinander?
Wenn sie nicht so konfiguriert werden können, würde ich gerne wissen, warum nicht.
Ich nehme die anfängliche Warteschlangentiefe der Warteschlange, in der sich der Listener befindet, und dekrementiere diesen Wert für jede eingehende Nachricht. Im Idealfall, wenn die Anzahl null ist, muss die verarbeitete Nachricht die letzte sein. So stelle ich fest, dass mein einzelner JmsListener heruntergefahren werden soll. Aber eine Anforderung kam dadurch, dass ich mehr Warteschlangen brauche. –
Also, in der Theorie, wenn ich weiß, dass ein bestimmter JmsListener fertig ist, kann ich mich damit aufhalten und dann im Grunde mit dem nächsten beginnen, den ich gerne ausführen würde? Obwohl ich das asynchrone Bit vielleicht übersehen habe, wenn ich die Frühlingsdokumente durchstöbere ... Das mag auch zu meinem Vorteil funktionieren –