关于activeMq实现queue和topic两者消息模式共存

关于activeMq的学习 (一个项目内queue和topic两者消息模式共存)

 

1.发送者:

 

///发送消息  queue
    @RequestMapping("/send")
    public void send(String msg) {
        for(int i=0;i<30;i++){
            jmsTemplate.convertAndSend(new ActiveMQQueue(MQQueueType.MQ_STUDY), i+":send queue: MQ_STUDY"+msg);
        }
    } 
    
    ///发送消息  topic 
    @RequestMapping("/sendt")
    public void sends(String msg) {
        for(int i=0;i<30;i++){
            jmsTemplate.convertAndSend(new ActiveMQTopic(MQQueueType.MQ_STUDY), i+":send topic MQ_STUDY:"+msg);
        }
    } 
    

2.消费者

 

 

 //destination是指 该消费者监听的队列名称   containerFactory为指定监听容器工厂
    //queue
    @JmsListener(destination = MQQueueType.MQ_STUDY , containerFactory = "queueListenerFactory")  
    public void receiveMessage(String text) {
        log.info("【*** " + MQQueueType.MQ_STUDY + " 接收消息 queue ***】" + text);
    }
    
    //tocic
    @JmsListener(destination = MQQueueType.MQ_STUDY , containerFactory = "topicListenerFactory")  
    public void receiveMessagetoc(String text) {
        log.info("【*** " + MQQueueType.MQ_STUDY + " 接收消息 topic  ***】" + text);
    }

3.监听工厂 

 

@Bean
    public JmsListenerContainerFactory<?> queueListenerFactory(ConnectionFactory connectionFactory) {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        factory.setPubSubDomain(false);
        factory.setConnectionFactory(connectionFactory);
        return factory;
    }
    @Bean
    public JmsListenerContainerFactory<?> topicListenerFactory(ConnectionFactory connectionFactory) {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        factory.setPubSubDomain(true);
        factory.setConcurrency("1");
        factory.setConnectionFactory(connectionFactory);
        return factory;
    }

 

测试结果:

这里启动了两个相同的项目进行测试:

1.topic 测试结果:两个topic  消费者 收到消息一致,并且 queue未收到消息 ,成功。

 

2. queue 测试结果:两个queue消费者 收到消息不一致,并且 未重复 ,成功。

yml配置: (当前测试数据  的配置  是开启了 topic模式,共存模式是否需要配置不清楚 ---未测--)

spring:
  jms:
  #topic模式需要配置为true
    pub-sub-domain: true
  activemq:
    broker-url: tcp://127.0.0.1:61616
    user: admin
    password: admin
    in-memory: true
#true表示使用连接池
    pool:
      enabled: false
    non-blocking-redelivery: false

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值