目前,我们正在推出的ActiveMQ到这是一个不同的排队系统上运行我们的现有应用程序。春天JMS是用来使用Spring框架内现有的集成。
我们的大多数应用程序的使用点至点(队列)的通信,其中一个例外。它需要能够听,而在同一时间发布到多个队列由其他生产应用程序创建的主题。
这意味着应用程序需要同时支持主题和队列。然而,设置全局属性时
jms:
pub-sub-domain: true
设置为全局和所有排队的用户立即订阅的主题,我们可以在ActiveMQ的网络界面中看到。
是否存在一种配置,支持在同一时间两个主题和队列的应用程序的方法吗?
引导属性用于配置@JmsListener
方法使用的默认容器厂,以及配置JmsTemplate
。
只需覆盖开机的默认容器厂...
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(
DefaultJmsListenerContainerFactoryConfigurer configurer,
ConnectionFactory connectionFactory) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
configurer.configure(factory, connectionFactory);
return factory;
}
然后添加的第二个
@Bean
public DefaultJmsListenerContainerFactory jmsTopicListenerContainerFactory(
DefaultJmsListenerContainerFactoryConfigurer configurer,
ConnectionFactory connectionFactory) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
configurer.configure(factory, connectionFactory);
factory.setPubSubDomain(true); << override the boot property
return factory;
}
然后,参照备用工厂在@JmsListener
的话题。
另外,如果你不具备这两种类型的听众,设置为true
财产,但覆盖Boot的JmsTemplate
配置。