Я пытаюсь использовать обмен мертвыми буквами с аннотациями в моем коде Java.Может быть, мое предположение неправильно, как это должно работать.Но в моем методе processMpcMessage я десериализую сообщение из очереди в POJO.Если я получаю IllegalargumentException, я хочу, чтобы сообщение помещалось в очередь недоставленных сообщений.Я настроил обмен сообщениями и ключ маршрутизации, см. Мой пример кода.Если я выбрасываю, «выбрасывать новое AmqpRejectAndDontRequeueException (msg, исключение);»Я ожидаю, что сообщение, которое я использовал ранее, помещается в очередь недоставленных сообщений.Однако я получаю следующее отладочное сообщение:
2019-02-07 13: 35: 42,009 [SimpleAsyncTaskExecutor-1] DEBUG {} - org.springframework.amqp.rabbit.listener.BlockingQueueConsumer - отклонениесообщения (Requeue = false)
Любой совет приветствуется С уважением Dirk
@RabbitListener(bindings = @QueueBinding(
value = @Queue(
value = "${mpc.inbound.receive.queue}",
durable = "true",
arguments = {
@Argument(name = "x-dead-letter-exchange", value = "${mpc.inbound.dead.letter}"),
@Argument(name = "x-dead-letter-routing-key", value = "${mpc.inbound.receive.error.routing.key}"),
@Argument(name = "defaultRequeueRejected", value = "false")
}),
exchange = @Exchange(value = "${mpc.inbound.exchange}",
type = ExchangeTypes.TOPIC, durable = "true"),
key = "${mpc.inbound.routing.key}"
))
public void processMPCMessage(final Message message) {
//Here the message is deserialized in to a java object and this is where I want to throw a exception.
try{
}catch(IllegalArgumgenException ex){
throw new new AmqpRejectAndDontRequeueException(" a error message", ex);
}
}