春の統合のRabbitMQを使用する場合は、RabbiMQは、メッセージに耳を傾ける必要があります。通常、選択的に、次の二つのインタフェースを実装します。
MessageListenerの 情報メッセージを取得する唯一の
ChannelAwareMessageListenerは、 メッセージ・チャネルの情報を取得することができますし、
違いは、手動の肯定応答チャネルのメッセージを拒否することができるということである、と
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で再現