• RabbitMq:SimpleMessageListenerContainer和ChannelAwareMessageListener的配合使用


    思路:

    1、 在配置类中通过 SimpleMessageListenerContainer 配置监听消息队列的各种参数

    2、 自定义一个类实现 ChannelAwareMessageListener 接口


    配置类

    package com.example.testgetmq.config;
    
    import com.example.testgetmq.controller.MyConsumer;
    import org.springframework.amqp.core.AcknowledgeMode;
    import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
    import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class RabbitMQConfig {
    
        @Autowired
        SimpleRabbitListenerContainerFactory simpleRabbitListenerContainerFactory;
    
        @Bean
        public SimpleMessageListenerContainer test_SimpleRabbitListenerContainerFactory() {
            SimpleMessageListenerContainer simpleMessageListenerContainer =
                    simpleRabbitListenerContainerFactory.createListenerContainer();
            simpleMessageListenerContainer.setQueueNames("boot_queue");
            simpleMessageListenerContainer.setConcurrentConsumers(1);
            simpleMessageListenerContainer.setMaxConcurrentConsumers(5);
            //设置是否重回队列
            simpleMessageListenerContainer.setDefaultRequeueRejected(false);
            //设置自动签收
            simpleMessageListenerContainer.setAcknowledgeMode(AcknowledgeMode.AUTO);
            //设置监听外露
            simpleMessageListenerContainer.setExposeListenerChannel(true);
    
    //        将实现了ChannelAwareMessageListener接口的MyConsumer类的实例传进setMessageListener中
            simpleMessageListenerContainer.setMessageListener(new MyConsumer());
    
            return simpleMessageListenerContainer;
    
        }
    
    
    }
    
    

    实现 ChannelAwareMessageListener 接口

    package com.example.testgetmq.controller;
    
    
    import com.rabbitmq.client.Channel;
    import org.springframework.amqp.core.Message;
    import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;
    
    
    public class MyConsumer implements ChannelAwareMessageListener {
    
        @Override
        public void onMessage(Message message, Channel channel) throws Exception {
            System.out.println("我的方法呀:" + message);
        }
    
    }
    
    
  • 相关阅读:
    素数个数(素数➕dfs)
    最小正子段和
    set<int> 的用法
    C
    map的用法
    B
    威佐夫博弈
    Stars(树状数组)
    upper_bound和lower_bound的用法
    超级大水题(还是自己过不了的水题)
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/14808758.html
Copyright © 2020-2023  润新知