1

正しく構成された RabbitMQ キューのように見えるもの (dlx 引数を表示) があり、Java リスナー コードでFatalListenerExecutionException. 何らかの理由で、例外がスローされた後、指定された配信不能キューに何も表示されません。

間違った種類の例外をスローしていますか?

ありがとう。

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;
    }

RabbitMQ コンソールに表示される「some.queue」のバインディング:

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

2 に答える 2

1

スローする必要があります。または、リスナー コンテナーのAmqpRejectAndDontRequeueExceptionセットアップに十分な量があります。defaultRequeuRejected="false"

Spring AMQP のテスト ケースを参照してください: https://github.com/spring-projects/spring-amqp/blob/master/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/FixedReplyQueueDeadLetterTests .java

于 2015-02-02T21:26:14.697 に答える