在使用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);
}
}