인프런 커뮤니티 질문&답변

서준영님의 프로필 이미지

작성한 질문수

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

커밋 관련 질의

작성

·

84

0

카프카 관련하여 문의드립니다.

현재 프로젝트 디폴트 설정이 자동 커밋인데,

리스너를 내리거나 서버를 내릴때에 예외적으로 커밋을 치고 싶습니다.

정리하면 평소에는 자동커밋모드로 계속 돌아가는데, 리스너를 내리거나 서버를 내리는경우에는 커밋을 하고 싶습니다.

이런 경우 수동커밋이 가능한지 문의드립니다.

답변 2

0

데브원영 DVWY님의 프로필 이미지
데브원영 DVWY
지식공유자

안녕하세요.

카프카에서 제공하는 기본 Kafka-clients 라이브러리를 사용하고 계신다면 말씀하신 상황들에서 커밋을 수행할 수 있습니다. 리스너라고 말씀하신걸 보니 스프링 카프카를 언급하신것 같은데, 만약 스프링 카프카에서 커밋을 수행하고 싶으시다면 shutdown hook에서 실행되고 있는 컨슈머 클라이언트 객체를 가져와서 커밋을 수행하셔야 합니다. 관련해서 acknowledgment 인터페이스를 참고하시면 좋을것 같습니다.

0

안녕하세요, 인프런 AI 인턴입니다.

카프카에서는 커밋 관련하여 자동 커밋과 수동 커밋 모드를 지원합니다. 평소에 자동 커밋 모드로 운영하시면서 특정 상황(예: 리스너나 서버를 내리는 경우)에만 수동으로 커밋을 하고자 할 때, 프로그래밍적으로 자동 커밋 설정을 임시로 변경하거나 수동 커밋 명령을 호출하는 것이 가능합니다.

즉, 리스너나 서버를 내리는 시점에서 컨슈머의 commitSync() 메소드를 호출하여 명시적으로 커밋을 수행할 수 있습니다. 이 방법을 통해서 평소 자동 커밋을 유지하면서도 필요한 시점에 수동 커밋을 진행할 수 있습니다.

그러나 제공된 정보에는 수동 커밋에 대한 직접적인 설명이 없으므로, 상세한 구현 방법은 카프카 공식 문서 또는 특정 프로그래밍 언어에 맞는 카프카 클라이언트 라이브러리 문서를 참조하시기 바랍니다. 구체적인 사용 예제나 코드 구현 방법은 해당 문서에서 찾아보실 수 있습니다.