두 가지 혼란이 있습니다.
1. 메시지 리스너에서 RuntimeException이 발생하면 SimpleMessageListenrContainer가 중지됩니까? 2. SimpleMessageListenerContainer가 중지되지 않으면 자동 승인에 대한 동작은 무엇입니까?
현재 메시지 리스너 핸들 메시지가 실패하면 오류를 기록하고 컨테이너를 중지하지 않고 브로커에게 메시지를 수신했음을 알리고 싶습니다.
이제 메시지 리스너 메서드에서 throwable을 잡았습니다. 올바른 방법입니까?
아니요, 컨테이너는 멈추지 않습니다.
리스너에서 예외가 발생하면 메시지가 거부되고 기본적으로 다시 대기열에 추가됩니다. defaultRequeueRejected
false (기본적으로 true)로 설정하여 메시지를 삭제하도록 기본 동작을 변경할 수 있습니다 . 또는 AmqpRejectAndDontRequeueException
컨테이너가 메시지를 거부 (대기열이 아닌)하도록 지시하는를 throw합니다. ACK는 리스너가 예외를 throw하지 않은 것처럼 전송됩니다.
대기열에 다시 넣지 않고 메시지가 거부되면 대기열이 그렇게 구성된 경우 폐기되거나 배달 못한 편지 교환으로 보내집니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다