-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[#70] RabbitMQ 재처리 설정 #71
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- DLX(Dead Letter Exchange): 소비 시 예외를 던지면 해당 메세지를 거부하고 Queue Flag를 false로 설정하여 DLX로 보낸다. Related: #70
Related: #70
- 기존엔 MemberService에서 Member를 찾았으나 NotFoundException은 DLX로 보내지못함. 일단 Amqp 예외를 던지자. Related: #70
- 메세지잘못으로 발생된 에러는 MessageParsingError로 던지기. Related: #70
- 심각한 에러일 경우 ImmediateAcknowledgeAmqpException 예외를 던지고, 그 외엔 dlx큐로 보내는 AmqpRejectAndDontRequeueException 예외를 던진다. - ImmediateAcknowledgeAmqpException: 발생 시 해당 메세지를 즉시 확인 처리하여, 다시 큐에 넣거나 다른 처리를 하지않는다. 즉, 재처리해도 소용없는 심각한 오류일 경우 해당 예외를 던진다. - AmqpRejectAndDontRequeueException: 발생 시 해당 메세지를 거부하고 DLX로 보낸다. 그리고 DLX의 재처리 로직으로 설정한 retry 횟수만큼 다시 시도한다. Related: #70
- 심각한 예외인지 판단하는 Straegy를 정의한다. - 기본적으로 제공해주는 DefaultExceptionStrategy를 데코레이터로 감싸서 NotFoundEntityException과 MessageParsingError를 추가한다. Related: #70
- 헤더에 RETRY_COUNT_HEADER값이 없으면 0으로 설정 후 reservation큐로 다시 보낸다. 그리고 1을 더한다. - 헤더에 RETRY_COUNT_HEADER값이 3미만이면 reservation큐로 다시 보낸다. 그리고 1을 더한다. - 헤더에 RETRY_COUNT_HEADER값이 3이상이면 메세지를 소멸시킨다. Related: #70
Related: #70
⭐️Code Coverage
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
개요
메세지 Consume 도중 예외가 발생하면, 처리되지 않았으므로 다시 큐로 들어가게되며 예외가 다시 발생한다. 그리고 해당 작업은 무한반복된다.
작업사항
AmqpRejectAndDontRequeueException
)ImmediateAcknowledgeAmqpException
)설정참고: https://www.baeldung.com/spring-amqp-error-handling
변경로직