2

と非同期でメッセージを消費していますSimpleMessageListenerContainer。そのメッセージはサービス層のメソッドを呼び出し、トランザクションのロールバックをテストするために意図的に例外をスローします。メッセージをキューの最後に送り返したいのですが、そうはなりません。誰かが私を助けることができますか?

4

1 に答える 1

0

setChannelTransacted を true に設定し、RabbitTransactionManager を SimpleMessageListenerContainer に設定していることを確認してください。設定を投稿していただけると助かります。また、例外をスローするときは、AMQPRejectAndDontRequeueException をスローしていないことを確認してください。これは、全体的な構成に関係なく、spring-amqp に再キューイングしないように明示的に指示するためです。

@Bean
public SimpleMessageListenerContainer messageListenerContainer()
{
    SimpleMessageListenerContainer result = new SimpleMessageListenerContainer();
    result.setConnectionFactory(connectionFactory);
    result.setTransactionManager(rabbitTxManager);
    result.setChannelTransacted(true);
    result.setMessageListener(myMessageListener);
    result.setConcurrentConsumers(1);
    result.setQueues(myQueues);
    return result;
}
于 2015-02-20T20:52:21.037 に答える