2015-02-02 3 views
1

У меня есть то, что кажется правильно настроенной очередью RabbitMQ (показывает аргумент dlx), и в моем коде слушателя Java я бросаю FatalListenerExecutionException. По какой-то причине ничего не появляется в заданной очереди мертвых букв после того, как выбрано исключение.Spring AMQP - ничего не отображается в очереди мертвых букв

Я бросаю неправильное исключение?

Спасибо.

Очередь конкретизации в конфигурации Spring:

Map arguments = new HashMap(); 
arguments.put("x-dead-letter-exchange", "dlx.queue"); 
new Queue("some.queue", true, false, false, arguments); 

Слушатель Контейнер в конфигурации Spring:

public SimpleMessageListenerContainer 
someContainer(){ 
     final SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(); 
     container.setConnectionFactory(connectionFactory); 
     container.setQueues(createTheQueue()); 
     container.setMessageListener(theListener()); 
     container.setConcurrentConsumers(numberOfConcurrentConsumers); 
     container.setMaxConcurrentConsumers(maxDefaultConsumers); 
     container.setDefaultRequeueRejected(false); 
     return container; 
    } 

Наручники для "some.queue", показанной на RabbitMQ консоли:

Parameters : x-dead-letter-exchange: dlx.queue 

ответ

0

You должен выбросить AmqpRejectAndDontRequeueException или достаточно установить defaultRequeuRejected="false" для контейнера-слушателя.

Смотрите тест-случай с весны AMQP: https://github.com/spring-projects/spring-amqp/blob/master/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/FixedReplyQueueDeadLetterTests.java

+0

Спасибо. У меня фактически есть defaultRequeuRejected = "false". – mstrom

+0

Вам необходимо указать вашу конфигурацию, включая привязку DLX/DLQ. –

+0

Спасибо. Я добавил детали к исходному вопросу. – mstrom

Смежные вопросы