如何在JAVA中使用单个消耗访问多个JMS队列

时间:2019-11-20 08:12:11

标签: spring-boot spring-jms

我需要访问多个JMS队列,并根据我们得到的事件执行所需的操作。这是在Spring Boot项目上完成的。谁能帮忙

1 个答案:

答案 0 :(得分:0)

您可以在Spring启动中配置不同的@JmsListener,它将从您已配置的相应队列中接收消息。

@JmsListener(destination = "${abcQueueName}", containerFactory = "abcQueueListenerFactory")
    public void receiveQuery(@Payload Test test,
                                    @Headers MessageHeaders headers,
                                    Message message,
                                    Session sessionQuery) {
}





@Bean(name = "abcQueueListenerFactory")
        public JmsListenerContainerFactory<?> testQueueListenerFactory(ConnectionFactory connectionFactory, DefaultJmsListenerContainerFactoryConfigurer configurer) {
            DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
            factory.setPubSubDomain(false);
            factory.setSessionTransacted(true);
            factory.setConcurrency(concurrency + "-" + maxConcurrency);
            factory.setReceiveTimeout(Long.valueOf(receiveTimeout));
            factory.setConnectionFactory(connectionFactory);
            factory.setMessageConverter(jsonMessageConverter);
            factory.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
            configurer.configure(factory, connectionFactory);
            return factory;

        }