在使用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