Kafka 실패 메시지는 어떻게 다시 처리할까kafka 를 이용하여 컨슘한 메시지를 처리하고, 완료 후에 이벤트를 발행하는 서비스를 개발하였다. 개발 환경에서 테스트를 할 때는 DLQ 로 빠지는 이벤트가 없었지만, 실제 운영 환경에서는 msa 서버간의 통신 중에 timeout 이 종종 일어난다거나 Database 증설 작업 등으로 순단이 발생하였다. 현재 내가 개발한 서비스는 event 처리에 실패하면 DLQ topic으로 메시지를 보내고, 원본 topic의 offset은 진행된다. 다만 DLQ topic을 별도로 consume하는 로직은 아직 없고, 운영자가 API를 직접 호출해서 필요한 비즈니스 로직과 event 발행을 수동으로 수행하고 있다. 이 구조는 당장에 처리해야할 메시지를 정상적인 것 처럼 ..
Kafka
kakfa의 등장 배경실시간으로 데이터를 처리하는 과정에서, 다수의 producer 와 consumer가 개별적인 연결을 맺는 구조의 경우 하나의 시스템만 추가되어도 통신 구조가 복잡해진다. 이런 문제를 해결하기 위해서 카프카를 통해, 메세지와 데이터의 흐름을 중앙화하여 관리한다. Kafka 의 구성요소 producer : 정보를 제공하는 processconsumer: 정보를 제공받아서 사용하려는 processconsumer group : 카프카 컨슈머들은 컨슈머 그룹에 속한다. 여러개의 컨슈머가 같은 컨슈머 그룹에 속할 때 각 컨슈머가 해당 토픽의 다른 파티션을 분담해서 메세지를 읽을 수 있다.broker : 데이터를 저장하고 수신 및 전달하는 node (그림은 MQ == Broker 같이 보이는데..