В качестве исключения при обработке сообщения из RabbitMQ я просто хотел отменить подтверждение и вместо этого поместить конкретное сообщение в другую очередь или повторно поставить в очередь в ту же очередь или полностью отбросить сообщение (согласно последнему логическому флагу @requeue в basicNack).
Вся идея заключается в том, что позже я могу получить количество неподтвержденных сообщений и проверить формат сообщения и т. Д. Вместо того, чтобы снова и снова ставить в очередь один и тот же канал, а также я хочу отправить неподтвержденный сигнал на текущий канал.
К вашему сведению, я установил режим подтверждения канала как ручной (т.е. container.setAcknowledgeMode(AcknowledgeMode.MANUAL);)
Это то, что я делаю сейчас.
public class My***Listener implements ChannelAwareMessageListener{
try{
@Override
public void onMessage(Message message,Channel channel) throws Exception {
String s = new String(message.getBody());
//some logic
//after successful ack manually
channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
}
catch(Exception e){
//currently on exception i am unack the channel
channel.basicNack(message.getMessageProperties().getDeliveryTag(),false,false);
}
Любая помощь очень ценна.