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

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM