RabbitMQ からのメッセージの処理中に例外が発生した場合、特定のメッセージを確認解除して別のキューに戻すか、同じキューに再キューイングするか、メッセージを完全に破棄したかっただけです (basicNack の最後の Boolean flag@requeue に従って)。
全体のアイデアは後で、未確認メッセージの数を取得し、同じチャネルに何度も再キューイングする代わりにメッセージ形式などを確認でき、未確認の信号を現在のチャネルに送信したい.
参考までに、チャネル ack モードを手動に設定しました (つまり、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);
}
どんな助けも非常に高く評価されます。