背景
kafka 在有新消费者加入或者撤出时,会触发rebalance操作,在subscibe订阅主题的时候,我们可以编写回掉函数,在触发rebalance操作之前和触发成功之后,提交相应偏移量和获取拉取偏移量
代码
订阅主题的时候
consumer.subscribe(Collections.singletonList(topic), new SaveOffsetOnRebalance(mulConsumer));
SaveOffsetOnRebalance类
class SaveOffsetOnRebalance implements ConsumerRebalanceListener {
private Consumer<String, String> consumer;
//初始化方法,传入consumer对象,否则无法调用外部的consumer对象,必须传入
public SaveOffsetOnRebalance(Consumer<String, String> consumer) {
this.consumer = consumer;
}
@Override
public void onPartitionsRevoked(Collection<TopicPartition> collection) {
//提交偏移量 主要是consumer.commitSync(toCommit); 方法
System.out.println("*- in ralance:onPartitionsRevok