예외가 발생하면 어떤 메시지도 다시 큐에 넣지 않아도되지만 다른 큐에 메시지를 게시하려고하는 리스너 클래스 (Spring의 MessageListener
인터페이스 구현)가 있습니다.Spring AMQP 예외 처리 기본 사항
나는 청취자가 AmqpRejectAndDontRequeueException
을 잡기 위해 필요하다고 생각하지만, 나는 예외를 던지기 위해 그것을 필요로한다는 것을 읽었다. 그렇게하면 메시지를 다시 게시 할 수 없습니다.
일반 예외를 잡아서 거기에 다시 게시해야합니까? 그 시점에서 실제로 AmqpRejectAndDontRequeueException
을 던질 필요가 있습니까?
나는 이것을위한 모범 사례에 대해 궁금해. 감사.
감사를 반환 할 필요
FatalExceptionStrategy
를 보라. 그 시점에서 AmqpRejectAndDontRequeueException 예외를 던지지 않으면 어떻게됩니까? 그것은 다시 채워지 는가? 내 config에 AdviceChain이 retryInterceptor가 없습니다. 나는 그냥 데드 레터 큐를 사용해야 만 할까? – mstrom@mstrom 예외를 처리 할 준비가되지 않은 경우 왜 DLQ가 필요한지, 전략을 무시하거나 try catch 블록을 사용하여 handleMessage 메소드를 추가하거나 둘러싸면 – Jaiwo99
예외를 처리하는 경우 게시 한 다음 메시지를 소비합니다. 예외가 없으면 메시지가 거부됩니다. DLX/DLQ를 사용하는 경우에만 예외가 발생하는 유일한 이유가 있습니다. 스택 추적과 같은 정보를 담고있는 헤더와 함께 실패한 메시지를 다른 큐에 게시하는'RepublishMessageRecoverer '로 재시도 인터셉터를 구성 할 수도 있습니다. 또한 defaultRequeueRejected를 false로 설정하여 예외에 관계없이 실패한 메시지를 항상 거부 할 수 있습니다. –