思路:
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);
}
}