Spring的JMS的使用点至点在同一应用程序和主题

问题描述 投票:0回答:1

目前,我们正在推出的ActiveMQ到这是一个不同的排队系统上运行我们的现有应用程序。春天JMS是用来使用Spring框架内现有的集成。

我们的大多数应用程序的使用点至点(队列)的通信,其中一个例外。它需要能够听,而在同一时间发布到多个队列由其他生产应用程序创建的主题。

这意味着应用程序需要同时支持主题和队列。然而,设置全局属性时

jms:
    pub-sub-domain: true

设置为全局和所有排队的用户立即订阅的主题,我们可以在ActiveMQ的网络界面中看到。

是否存在一种配置,支持在同一时间两个主题和队列的应用程序的方法吗?

java spring-boot jms activemq spring-jms
1个回答
1
投票

引导属性用于配置@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配置。

© www.soinside.com 2019 - 2024. All rights reserved.