Ich entwickle einen Spring JMS-basierten Client, der eine Verbindung zu einem IBM MQ herstellt.Spring JMS: Konfigurieren von Multi-Consumer-Client
Dieser Teil funktioniert gut !!
Szenario:
Der MQ-Client eine Anfrage von mehreren Spring "@Components" bekommen kann. In Anbetracht JMSTemplate der „Senden“ und „Empfangen“ ganz andere Methoden sind -
Frage:
Wie wir zusammen beziehen sich die Antwort von bauteil man nur seine Anfrage? z.B.
A sendet Anfrage-A
B Anfrage-B
Wie wird SpringListener wissen sendet die Antwort-A auf A zu reagieren und Antwort-B nach B?
Bietet der Frühling eine Out-of-Box-Funktionalität für ein solches Szenario?
Vielen Dank im Voraus!
Beispiel Zuhörer:
public class MessageReceiver implements MessageListener {
@Override
public void onMessage(Message message) {
if(message instanceof TextMessage){
System.out.println(message.toString());
}
}
}
Probe Sender:
public class App
{
public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
JmsTemplate jmsTemplate = (JmsTemplate)context.getBean("jmsTemplate");
jmsTemplate.send(s -> s.createTextMessage("TestingAMQ"));
}
}
Die Methode "SendAndReceive" erstellt eine temporäre Queue (pro der jmsTemplate Dokumentation) zu reagieren. "Message.setStringProperty" scheint eine gute Idee zu sein ... aber müsste die Methode nicht synchronisiert werden? Wenn die Methode nicht synchronisiert wird, kann ein neuer Thread den Wert 'property' in der Methode ändern. – Deep
Eine andere Möglichkeit könnte sein, - senden + empfangen transaktional. Obwohl ich nicht sicher bin, wie dies umgesetzt werden könnte. – Deep
Senden Sie eine Nachricht und empfangen Sie die Antwort vom angegebenen Ziel (gemäß der jmsTemplate-Dokumentation), da Sie sie als Parameter an die sendAndReceive-Methode übergeben. Das Ziel kann einen beliebigen Typ haben und vor –