2017-07-29 15 views
1

各キューに対してこれらの設定を行うことはできますか。私はキュークラスで、それが可能であることがわかりましたので、私は、リトライ数が多い重要なキューが必要ですが、それほど重要で、私は再試行を設定しないキュー、試みなどspring rabbitmqを使用して異なるキューでタイムアウト、再試行、または最大試行を設定する方法

public Queue newQueue(String name) { 
    return new Queue(name, durable, exclusive, autoDelete, arguments); 
} 

を持っています引数マップを最後のパラメータとして渡すことができますが、ここにあるのか、プロパティを使うのか分かりません。

答えて

1

私のケースでは、リトライインターセプターを使用してリスナーファクトリーを作成しなければなりませんでしたが、リトライインターセプターで最大試行の値を設定しました。たぶん

はあなたのために働く:

興味深い
@Autowired 
private ConnectionFactory connectionFactory; 

@Autowired 
private SomeService someService; 

@RabbitListener(id = "queueListener", queues = "queueName", 
     containerFactory = "listenerContainerFactory") 
@RabbitHandler 
public void notifyLegacyListener(SomeObject obj) { 
    someService.doSomething(obj); 
} 

@Bean 
public SimpleRabbitListenerContainerFactory listenerContainerFactory() { 
    SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); 
    factory.setConnectionFactory(connectionFactory); 
    factory.setMessageConverter(jsonMessageConverter()); 
    factory.setConcurrentConsumers(3); 
    factory.setMaxConcurrentConsumers(10); 
    factory.setAdviceChain(new Advice[] {retries()}); 
    return factory; 
} 

@Bean 
public RetryOperationsInterceptor retries() { 
    return RetryInterceptorBuilder.stateless().maxAttempts(Queues.QUEUE_LEGACY.getMaxAttempts()) 
      .backOffOptions(1000, 
        3.0, 10000) 
      .recoverer(new RejectAndDontRequeueRecoverer()).build(); 
} 

@Bean 
public MessageConverter jsonMessageConverter() { 
    return new Jackson2JsonMessageConverter(); 
} 
+0

、私はTKS、それは私の問題を解決だと思います –

2

これらはキューのプロパティではなく、リスナーコンテナに追加された再試行アドバイスのプロパティです。キューごとに異なるコンテナ/アドバイスを使用します。 Spring AMQPリファレンスマニュアルを参照してください。

関連する問題