在使用Spring集成RabbitMQ时,需要监听RabbiMQ消息。一般选择性实现下面俩接口:
MessageListener 只能获取到Message信息
ChannelAwareMessageListener 能获取到Message以及Channel信息
不同点在于channel可以手工确认消息以及拒绝
- public class TestMessageListener implements ChannelAwareMessageListener {
-
- private static final Logger logger = LoggerFactory.getLogger(TraceAnalyzeListener.class);
-
- @Autowired
- private TraceAnalyzeService traceAnalyzeService;
-
- @Autowired
- private ElasticOperationService elasticOperationService;
-
- @Autowired
- private RedisTemplate<String, String> redisTemplate;
-
- @Autowired
- private TraceMessageSender traceMessageSender;
-
- @Override
- public void onMessage(Message message, Channel channel) throws Exception {
-
- //消息的标识,false只确认当前一个消息收到,true确认所有consumer获得的消息
- //channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); //确认成功收到消息
- //ack返回false,并重新回到队列,api里面解释得很清楚
- //channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
- //拒绝消息
- //channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
- }
- }