zoukankan      html  css  js  c++  java
  • 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);
        }
    
    }
    
    
  • 相关阅读:
    WCF 连接数
    职责链(Chain of Responsibility)模式
    軟件需求分析說明書模板
    C++指針淺析(1)
    ORACLE NOCOPY的用法
    解释器模式(Interpreter Pattern)
    不用嵌套SQL,排序後取第一行值
    Java SE/EE剖析工具JProfiler 7发布了:探针、线程和堆检查
    三款Json查看小工具
    用Data Factory准备性能测试数据
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/14808758.html
Copyright © 2011-2022 走看看