2016-09-01 2 views
3

재시도 메커니즘을 모두 @RabbitListener으로 설정하는 방법을 찾으려고했습니다. 난 이미 속성 시도했다 :@RabbitListener에 대한 재시도 구성 프로그램 적으로 데드 - 레터 큐 지정

listener: 
    auto-startup: true 
    concurrency: 1 
    max-concurrency: 1 
    retry: 
    enabled: true 
    initial-interval: 1000 
    max-attempts: 3 
    max-interval: 10000 
    multiplier: 2 
    stateless: true 

그리고 오류가 메시지로 전송되지 않습니다 만 문제를 잘 작동합니다. 내가 가지고있는 유일한 문제는 특정 메시지를 보내려면 DLQx-dead-letter-exchangex-dead-letter-routing-key 인수를 추가하려면 대기열을 변경해야하며 이는 피하고 싶습니다.

그래서 제 질문은 : 프로그래밍 방식으로 메시지 큐를 다시 작성하지 않고 시도를 소진 한 후에 가야 DLQ 인 지정하는 방법은

  1. 있습니까? 사용하지 않으면 인수 X-죽은 -...

나는 봄 부팅 1.4.0.RELEASE을 사용하고 있습니다.

답변

3

경유지가 아닙니다.

당신은 당신의 자신의 재시도 요격에 리스너 컨테이너 공장의 조언 체인을 재정의 본 - RetryInterceptorBuilder로 구축 - 대신

builder.recoverer(new RejectAndDontRequeueRecoverer()); 

를 주입하면 주입 할 필요가 적절 RepublishMessageRecoverer 구성 -뿐만 아니라에 게시로 교환은 메시지 헤더에 추가 정보 (스택 추적 등)를 추가합니다.

기본 인터셉터가 built from the properties 인 방법을 보려면 SimpleRabbitListenerContainerFactoryConfigurer을 참조하십시오.

재 게시자는 this section of the Spring AMQP docs에서 논의됩니다.

관련 문제