Spring JMS:配置多消费者客户端



我正在开发一个基于 Spring JMS 的客户端,它连接到 IBM MQ。

这部分工作正常!!

场景:

MQ 客户端可以从多个 Spring "@Components" 获取请求。考虑到,JMSTemplate的"发送"和"接收"是完全不同的方法——

问题:

我们如何将组件一的响应与仅其请求相关联?例如

A

发送请求-A

B

发送请求-B

SpringListener 如何知道

将响应 A 响应 A 响应,响应 B 响应 B 响应 B?

弹簧是否提供了开箱即用的功能来处理这种情况?

提前感谢!!

示例侦听器:

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标头 发件人的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 属性,Message.setStringProperty并在侦听器中使用选择器或基于 StringProperty 的条件响应。

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jms/core/JmsTemplate.html#sendAndReceive-org.springframework.jms.core.MessageCreator-

发现这是'setProperty'的方法 -

https://codedependents.com/2010/03/04/synchronous-request-response-with-activemq-and-spring/

相关内容

  • 没有找到相关文章

最新更新