Ich habe mehrere Jobs, die jeweils mehrere Nachrichten in der Warteschlange haben. Die Nachrichten für jeden Job sind zufällig verschachtelt. Wenn ein Benutzer entscheidet, einen Job abzubrechen, möchte ich alle Nachrichten, die Teil dieses Jobs sind, aus der Warteschlange entfernen. Ich konnte browse()
verwenden, um alle zu entfernenden Nachrichten zu finden, aber ich konnte nicht herausfinden, wie sie entfernt werden können. Ich versuchte, sie loszuwerden, indem Sie receiveSelected()
verwenden, aber es hängt einfach. (Ich verwende JmsTemplate
)Wie kann ich Nachrichten aus einer JMS-Warteschlange löschen?
Antwort
JMS definiert keine Verwaltungsfunktionen wie das Löschen einer Nachricht aus der Warteschlange.
Der programmatische Weg besteht darin, die Nachricht zu konsumieren. Alternativ gibt es Messaging-Management-Tools, mit denen Sie dies ohne Programmierung tun können.
Es gibt keine JMS-API zum Entfernen von Nachrichten. Jedoch scheinen Sie purge
removeMessage
oder andere Operation gemäß Ihrer Anforderung auf MBean org.apache.activemq:type=Broker,brokerName=amq,destinationType=Queue,destinationName=testQ
zum Löschen von Nachrichten aufrufen.
Sie sind auf dem richtigen Weg. Diese Nachrichten mit einem Selektor zu konsumieren ist der Weg zu gehen - wie mit JmsTemplate receiveSelected.
Wenn es "hängt", bedeutet dies wahrscheinlich, dass Sie keine übereinstimmenden Nachrichten in der Warteschlange haben. Können Sie Ihre Nachrichten auf einer Eigenschaft wie JMSType oder einer anderen StringProperty identifizieren? Stellen Sie sicher, dass Sie einen JMS-Selektor bereitstellen können.
I.e. Wenn Ihre Jobs von Benutzer X initiiert werden, legen Sie eine Eigenschaft wie "initiatingUser" auf "x" fest. Verwenden Sie dann den Selektor initiatingUser='X'
, um alle Nachrichten zu konsumieren.
- 1. Wie kann ich Nachrichten aus einer Warteschlange entfernen?
- 2. Wie kann ich Benachrichtigungen über Firebase-Cloud-Nachrichten löschen?
- 3. Wie kann ich ein Feld aus einer Sitecore-Vorlage löschen?
- 4. Teradata: Wie kann ich eine Fremdschlüsseleinschränkung aus einer Tabelle löschen?
- 5. Kann Akka-Darsteller bei Bedarf Nachrichten aus seinem Postfach löschen?
- 6. DISCORD.JS wie lösche Nachrichten löschen?
- 7. Löschen von Nachrichten JSQMessagesViewController
- 8. Wie kann ich MIDI-Nachrichten abfangen?
- 9. Ich kann nicht löschen einzelne Zeile aus einer Textdatei C++
- 10. kann Zeilen aus einer Remotezugriffsdatenbank nicht löschen
- 11. Wie kann ich Sonderzeichen löschen?
- 12. Koolwired.Imap - Wie lösche ich Nachrichten?
- 13. Kann ich Serializer vollständig aus DRF löschen?
- 14. Wie kann ich doppelte Wörter aus String in PHP löschen?
- 15. Wie kann ich Daten aus der gemeinsamen Einstellung löschen?
- 16. Wie kann ich einen Eintrag aus einem Array löschen?
- 17. Wie kann ich das Löschen dieser Elemente aus SharedPreferences behandeln?
- 18. Wie kann ich eine Zeile aus einer Tabelle mit einer bestimmten Zeilennummer löschen oder auswählen?
- 19. BizTalk BAM - Wie kann ich Split Nachrichten
- 20. Wie kann ich ungelesene Nachrichten abfragen?
- 21. Wie kann ich QLocalSocket löschen?
- 22. Wie kann ich den NameValuePairs Schlüssel aus dem JSONObject löschen?
- 23. Wie kann ich Versand- und Rechnungsadressen aus Berichten löschen?
- 24. Wie kann ich alle Daten aus mehreren Baqend-Tabellen löschen?
- 25. Wie kann ich Partitionen dynamisch aus der Hive-Tabelle löschen?
- 26. Wie kann ich Zeilen aus einem Set-Range-Objekt löschen
- 27. Wie kann ich Artikel aus JSON-String löschen, ohne $ .grep
- 28. Wie kann ich IIS-Objekte aus C# löschen?
- 29. Wie kann ich Werte aus den entsprechenden Listen löschen?
- 30. Wie kann ich Dateien dauerhaft aus dem Verlauf entfernen (löschen)?
Ich verstehe nicht, warum Durchsuchen die Nachricht findet, aber wählen Sie hängt. Ich verwende in beiden Fällen die selbe messageSelector-Zeichenfolge und denselben destinationName. – Solx
Ich suche mit 'jmsTemplate.browseSelected' und wähle mit' jmsTemplate.receiveSelected (' – Solx