리밸랜스가 자주 발생하면 안되긴 하지만, 리밸랜스가 발생할 경우 리스너를 통해 대응 로직을 짤 수 있다.
카프카 라이브러리는 리밸랜스 발생을 감지하기 위해 ConsumerRebalanceListener 인터페이스를 지원한다.
ConsumerRebalanceListener 인터페이스로 구현된 클래스는 onPartitionAssigned(), onPartitionRevoked() 메소드로 이루어져 있다.
ConsumerRebalanceListener 인터페이스의 메소드
onPartitionAssigned(): 리밸런스가 끝낸 뒤에 파티션이 할당 완료되면 호출되는 메소드onPartitionRevoked(): 리밸런스가 시작되기 직전 호출되는 메소드. 마지막으로 처리한 레코드를 기준으로 커밋을 하기 위해 리밸런스가 시작하기 직전에 커밋을 하면 되므로 onPartitionRevoked() 메소드에 커밋을 구현하여 처리할 수 있다.