작성
·
16
0
재시도조차 실패한 메시지들은 dlt 로 이동하게 되고 이 메시지들에 대한 처리를 위해 @KafkaListner
를 사용해서 처리하는 방법을 보여주셨는데요.
리서치를 하다보니 @DltHandler
기능이 있는걸 알게됐습니다.
dlt
를 처리한다는 부분에서 @DltHandler
가 좀 더 어울릴거 같은 느낌인데 @KafkaListener
로 처리하신 특별한 이유가 있으실까요?
답변 2
0
안녕하세요! 질문 잘 해주셨어요 ~
질문해주신 내용에 답변드려볼게요 !
우선 강의에서 @KafkaListener
로 DLT를 사용한 이유는
클래스 분리를 통한 관심사 분리의 이점을 활용하기 위해서 였습니다!
@DltHandler
는 같은 Consumer 클래스 안에서
DLT 메시지를 같이 처리하는 방식이라 코드가 직관적이라는 장점이 있지만
메인 Consumer와 DLT 처리 로직이 한 곳에 섞여있어 관심사 분리가 덜 된다는 단점이 있어요 !
실무에서는 Slack 알림, 모니터링 시스템 연동, 별도 DB 저장 등의 이유로
DLT 메시지 처리 로직이 복잡해질 수 있어요 !
그래서 메인 Consumer와 완전히 분리해서 관리할 수 있는 @KafkaListener를 사용했습니다!
물론 DLT 처리 로직이 단순하고 @DltHandler를 써도 크게 단점을 느끼지 못하는 상황이라면
@DltHandler를 사용하는 것도 충분히 좋은 선택이에요 :)
추가로 궁금하신 점 있으시면 또 질문 남겨주세요~~
0
안녕하세요, 인프런 AI 인턴입니다. writer0713님.
Kafka에서 메시지를 처리할 때 일반적으로 사용하는 방법 중 하나가 @KafkaListener
와 @DltHandler
의 활용입니다. DLT(Dead Letter Topic)로 이동한 메시지를 어떻게 다룰지에 대한 질문을 주셨네요.
@KafkaListener
vs @DltHandler
@KafkaListener
:
@KafkaListener
는 특정 Kafka 토픽에서 메시지를 소비하여 처리하는 기본적인 방법입니다. 이를 사용하여 DLT에서도 메시지를 소비할 수 있으며, 구조가 단순하다는 장점이 있습니다.@DltHandler
:
@DltHandler
는 Spring Kafka에서 제공하는 기능으로, 주로 DLT의 메시지를 보다 효율적으로 관리하고 처리할 수 있도록 도와줍니다. 이 기능을 사용하면 DLT가 생성된 원인을 분석하고 재시도 또는 복구 절차를 별도로 구현하는 것이 보다 쉬워집니다.@KafkaListener
와 큰 차이가 없을 수도 있을 뿐 아니라, @DltHandler
의 활용은 특정 상황에서 필요에 따라 선택적으로 사용할 수 있습니다.기본적으로 @KafkaListener
를 사용하여 처리하는 것은 매우 직관적이며 일반적인 사용 방식입니다. @DltHandler
는 DLT 처리에 특화된 기능을 제공한다고는 하지만 @KafkaListener
로도 충분히 원하는 작업을 수행할 수 있기 때문에 강의에서 선택된 것으로 보입니다.
만약 DLT 메시지의 처리 로직을 간소화하거나 특화된 조작이 필요할 경우 @DltHandler
를 사용하는 것이 유리할 수 있습니다. 결국, 사용하는 기술 스택과 요구사항에 맞춰 선택하면 좋습니다.
이에 대해 추가적인 이해를 돕기 위해 유사한 질문과 답변을 확인하시려면 다음 링크를 참고하시기 바랍니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.