天天看點

Spring-Amqp MessageListener詳解

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

轉載于:https://my.oschina.net/woter/blog/1806673