컨슈머 그룹의 파티션 소유권이 변경될 때 일어나는 현상.
리밸런스를 하는 동안 일시적으로 메시지를 가져올 수 없으며 리밸런스 발생시 데이터 유실/중복 발생 가능성 있음.
추가적인 방법으로 유니크 키같은 것으로 유실을 방지할 수 있음 ?
리밸런스 발생 시점
보통 Headbeat * 3 을 세션 시간으로 정한다고 한다.
리밸런스 발생할 경우 호출되는 리스너. 리밸런스 발생에 따른 offset commit, 리밸런스 시간 측정을 통한 컨슈머 모니터링.
파티션이 끊어지거나 새로 할당 되었을때의 이벤트를 알 수 있음.
offset 커밋이나 파티션이나 커밋이 많을때 할당되는 시간이 오래 걸릴 수 있음. 시간 측정을 위해 로그를 남기는 경우 있음.
컨슈머를 정상 종료해야 할 때 사용.
Wakeup 사용하지 않을 경우.
그러나 갑자기 강제 종료될 경우 문제가 문제가 발생할 수 있다.
이 상태에서 컨슈머를 다시 켜면 커밋 안된 101 ~ 200을 다시 처리(중복)하게 된다
Wakeup을 사용할 경우
자바의 addShutodownHook(익셉션 핸들러)를 설정하여 wakeup을 호추하면 WakeupException 예외 처리가 발생하여 커밋을 완료하고 종료된다.
단 SIGKILL(9)는 프로세스 강제 종료로 커밋 불가(중복/유실 발생)