2017-01-24 3 views
0

Ich höre MQ Q mit Spring JMS @ JmsListener Annotation.Wie Sie javax.jms.TextMessage ohne JMS-Sitzungsobjekt duplizieren

@JmsListener(destination = "${qNmae}", 
        containerFactory = "jmsListenerContainerFactory2") 
    public void processMessage(Message<String> msg) throws JMSException { 

    } 

Ich muss Spring Message-Objekt in neue JMS TextMessage konvertieren. Ich weiß, dass ich den Methodenparameter vom Typ TextMessage anstelle von Nachricht setzen kann und der Spring automatisch konvertiert, aber dann bekomme ich unveränderliches Objekt, aber mein Code erfordert, dass ich bestehende Header beibehalten und in bestimmten Fällen neue Header hinzufügen muss. Im Grunde bin ich auf der Suche nach geeigneten Weg, um das JMS Message/TextMessage Objekt zu duplizieren, so dass ich meine eigenen Header ohne die JMS Session Objekte hinzufügen kann (Da ich @JmsListener verwende, möchte ich nicht einfach neue Sitzungen erstellen) zum Erstellen einer neuen Nachricht).

+0

Es gibt keine Klon-Methode in der ibm Message/TextMessage-Implementierung? –

+0

Das ist die erste Sache, die mir in den Sinn kam, aber als ich überprüft habe, gibt es keine – user3817206

+0

Was werden Sie mit der geklonten Nachricht tun? –

Antwort

0

In diesem Fall können Sie eine neue Instanz der Nachricht erstellen und Kopfzeilen kopieren oder eine Sitzung als Parameter zu Ihrer Methode hinzufügen. ProcessMessage und spring injection die Sitzung, die Sie zum Erstellen einer neuen Nachricht verwenden können (abhängig von der Implementierung, aber i think session erstellt nur eine neue Instanz wie der erste Vorschlag) und kopiert Header

Verwandte Themen