首页 > 其他 > 详细

RabbitMq:SimpleMessageListenerContainer和ChannelAwareMessageListener的配合使用

时间:2021-05-25 16:54:24      阅读:105      评论:0      收藏:0      [点我收藏+]

思路:

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);
    }

}

RabbitMq:SimpleMessageListenerContainer和ChannelAwareMessageListener的配合使用

原文:https://www.cnblogs.com/lyd447113735/p/14808758.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!