
179
7
장
상태 저장 스트리밍
7.6.3
클라이언트-브로커 트랜잭션 없이 실제로 한 번 처리
클라이언트-브로커 트랜잭션을 지원하지 않는 이벤트 브로커도 실제로 한 번 처리는 가능하지
만 더 많은 작업이 필요하고 중복 이벤트에 주의해야 합니다. 첫째, 업스트림 서비스가 실제로
한 번 처리를 보장할 수 없다면 중복 레코드가 생성될 수 있기 때문에 중복 이벤트를 찾아내 걸
러내는 작업이 필요합니다. 둘째, 이벤트 처리가 시스템 상태에 한 번만 반영되도록 상태 및 오
프셋을 하나의 로컬 트랜잭션으로 업데이트해야 합니다. 그래야 클라이언트는 처리 도중 생성
된 내부 상태와 입력 이벤트 스트림의 논리적 맥락의 일관성을 맞출 수 있겠죠. 이 과정을 조금
더 구체적으로 살펴보겠습니다.
WARNING
_
사후에 중복 제거
deduplication
를 하려고 애쓰지 말고 멱등적 쓰기를 지원하는 이벤트 브로커와 클
라이언트를 이용하는 편이 낫습니다. 후자는 모든 컨슈머 애플리케이션에 쉽게 적용할 수 있지만, 전자는 비
용도 많이 들고 사용하기도 까다롭습니다.
중복 이벤트 생성
중복 이벤트는 프로듀서가 이벤트를 이벤트 스트림에 성공적으로 기록했지만 쓰기
ACK
를 받
지 못해 재시도를 하거나 해당 컨슈머 그룹의 오프셋을 업데이트하기 이전에 실패할 때 생성됩
니다. 자세한 경위는 시나리오에 따라 ...