Обмен мертвыми буквами концепции не работает в моей среде - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь использовать обмен мертвыми буквами с аннотациями в моем коде 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);
}


}

1 Ответ

0 голосов
/ 07 февраля 2019

Очередь уже существует?

Очереди идемпотентны;Вы не можете изменить их свойства (аргументы) после того, как они созданы.Сначала удалите его, чтобы он был воссоздан.

Если это не так, включите ведение журнала DEBUG, чтобы увидеть, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...