Spring JMS:配置多消费者客户端
Spring JMS : Configure Multi Consumer client
我正在开发一个 Spring 基于 JMS 的客户端,它连接到 IBM MQ。
这部分工作正常!!
场景:
MQ 客户端可以从多个Spring“@Components”获取请求。考虑到,JMSTemplate 的 "send" 和 "receive" 是完全不同的方法 -
问题:
我们如何将组件一的响应与其请求关联起来?例如
A发送请求-A
B发送请求-B
SpringListener 如何知道响应 A 响应 A,响应 B 响应 B?
spring 是否提供开箱即用的功能来处理这种情况?
提前致谢!!
示例侦听器:
public class MessageReceiver implements MessageListener {
@Override
public void onMessage(Message message) {
if(message instanceof TextMessage){
System.out.println(message.toString());
}
}
}
发件人示例:
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"));
}
}
基于 JMSReplyTo
header 你可以用
JmsTemplate.sendAndReceive
发件人
在听众身边
public class MessageReceiver implements MessageListener {
@Override
public void onMessage(Message message) {
jmsTemplate.send(message.getJMSReplyTo(), s -> s.createTextMessage("TestingAMQ"));
if(message instanceof TextMessage){
System.out.println(message.toString());
}
}
}
或
通过 Message.setStringProperty
在发送方设置消息 属性 并在侦听器中使用选择器或基于 StringProperty 的条件响应。
发现这是 'setProperty' -
的方法
https://codedependents.com/2010/03/04/synchronous-request-response-with-activemq-and-spring/
我正在开发一个 Spring 基于 JMS 的客户端,它连接到 IBM MQ。
这部分工作正常!!
场景:
MQ 客户端可以从多个Spring“@Components”获取请求。考虑到,JMSTemplate 的 "send" 和 "receive" 是完全不同的方法 -
问题:
我们如何将组件一的响应与其请求关联起来?例如
A发送请求-A
B发送请求-B
SpringListener 如何知道响应 A 响应 A,响应 B 响应 B?
spring 是否提供开箱即用的功能来处理这种情况?
提前致谢!!
示例侦听器:
public class MessageReceiver implements MessageListener {
@Override
public void onMessage(Message message) {
if(message instanceof TextMessage){
System.out.println(message.toString());
}
}
}
发件人示例:
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"));
}
}
基于 JMSReplyTo
header 你可以用
JmsTemplate.sendAndReceive
发件人
在听众身边
public class MessageReceiver implements MessageListener {
@Override
public void onMessage(Message message) {
jmsTemplate.send(message.getJMSReplyTo(), s -> s.createTextMessage("TestingAMQ"));
if(message instanceof TextMessage){
System.out.println(message.toString());
}
}
}
或
通过 Message.setStringProperty
在发送方设置消息 属性 并在侦听器中使用选择器或基于 StringProperty 的条件响应。
发现这是 'setProperty' -
的方法https://codedependents.com/2010/03/04/synchronous-request-response-with-activemq-and-spring/