강사님 안녕하세요.
스프링 카프카로 공부를 하는 중, 궁금증이 생겨서 문의를 드립니다.
@KafkaListner 를 사용해서 컨슈머 리스너를 구현하였습니다.
리밸런스가 일어날 때, 메시지 중복 처리 발생을 막기 위한 예제를 직접 만들어 보고있는데요.
500개 레코드를 Poll 해온 뒤, 300번째 정도 레코드를 읽었을 때 Rolling Update 가 진행되도록 상황을 만들어서
리밸런싱이 발생하도록 하였습니다.
스프링 카프카에서 제공되는 ConsumerAwareRebalanceListener 를 이용하면 리밸런스가 일어날 때
onPartitionRevokedBeforeCommit 와 AfterCommit 함수를 이용해서 300번째까지 처리한 오프셋으로
수동 커밋을 해줄 수 있을 것 같던데요.
궁금한 것은 현재 300번째까지 처리했다라는 오프셋 값을 어떻게 얻을 수 있는지 모르겠습니다.
onPartitionRevokedBeforeCommit 의 인자로 넘어오는 Consumer 객체나 TopicPartition 객체에는
500개 레코드를 Poll 해온 시점의 offset 값은 있지만 현재 처리한 시점의 offset 값은 없는 것 같더라고요.
강사님 혹시 답을 알고 계실까요?
강의에는 스프링 카프카가 포함되어 있지 않지만, 함께 참고하고 있는 도서에는 스프링 카프카 챕터가 있어서 질문을 드렸는데 아쉽게도 경험이 부족하신 부분이군요. 아쉽지만 잘 알겠습니다.