SpringBoot2.1.X 整合 ActiveMQ同时支持两种模式(三)

我们用发布订阅模式操作时,点对点的就不起作用:

 http://localhost:8080/activemq/my/order?msg=oop

 看到有消息但是没有消费;也就是说,这种发布订阅模式模式操作,无效!

如何两个同时都可以? 

1、 在配置文件里面,注释掉 #spring.jms.pub-sub-domain=true

2、在启动类中添加

	//需要给topic定义独立的JmsListenerContainer
		    @Bean
		    public JmsListenerContainerFactory<?> jmsListenerContainerTopic(ConnectionFactory activeMQConnectionFactory) {
		        DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();
		        bean.setPubSubDomain(true);
		        bean.setConnectionFactory(activeMQConnectionFactory);
		        return bean;
		    }

3、在消费者类;@JmsListener如果不指定独立的containerFactory的话是只能消费queue消息!

@JmsListener(destination = "tv.topic", containerFactory="jmsListenerContainerTopic")

 代码:

/**
 *消费者
 */
@Component
public class TopicSub {

    //实时监听器监听order.queue这个消息队列
    @JmsListener(destination = "tv.topic", containerFactory="jmsListenerContainerTopic")
    public void receiveTopic1(String text){
        System.out.println("TopicSub 消费者1 收到的消息为:"+text);

    }

    @JmsListener(destination = "tv.topic", containerFactory="jmsListenerContainerTopic")
    public void receiveTopic2(String text){
        System.out.println("TopicSub 消费者2 收到的消息为:"+text);

    }

    @JmsListener(destination = "tv.topic")
    public void receiveTopic3(String text){
        System.out.println("TopicSub 消费者3 收到的消息为:"+text);

    }
}

4、其它都一样。

5、启动运行

http://localhost:8080/activemq/my/topic?msg=90884

可以知晓消费者3是没有消费的,是没有加@JmsListener的containerFactory的话,那只能消费queue消息 !

 

注意:

        默认消费者并不会消费订阅发布类型的消息,这是由于springboot默认采用的是p2p模式进行消息的监听!
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值