4.4.3 同步提交偏移量

4.4.3 同步提交偏移量

消费者同步提交偏移盐的做法,和4.2.2节第3小节“组合模式的运用:获取偏移量”中的获取偏移盘处理方式类似,都是在最外层用一个死循环来确保必须收到服务端返回的响应结果才能结束。自动提交任务使用异步模式提交偏移量,调用cHent.qutckPoll()后,可以立即回到主线程,所以异步模式是无阻塞的。而同步模式提交偏移量,调用者必须等到提交偏移量完成后才回到主线程,所以同步模式是阻塞的。相关代码如下:
在这里插入图片描述

自动提交任务使用异步方式提交偏移量,因为任务是周期性运行的,没有什么依赖条件,不需要采用阻塞方式;而同步提交通常是因为存在某些依赖条件,必须等待提交完成后才能往下进行。我们知道除了KafkaConsuMer暴露的两个提交偏移量方法外,异步提交偏移量是通过向动提交任务触发的,那么同步提交偏移量是什么时候被调用的呢?

消费者在准备加入或重新加入消费组之前,如果开启了向动提交任务,要先暂停定时任务,然后执行一次同步模式的提交偏移量方法。消费者调用cof111’ri.tOffsetsSync()方法后,必须等待消费者把偏移量提交到服务端并且收到响应结果,然后才允许进行下一步的操作。相关代码如下:
在这里插入图片描述

消费者内部的自动提交任务虽然是异步的,但却是定时的。如果消费者想要更精确地控制提交偏移量的时机,可以调用KafkaConsuf11er暴露出来的同步提交方法(C01’11’1lt5ync())或异步提交方法(caf111’1ltAsync())。比如,处理每一条记录就提交一次偏移量,或者只有轮询一次才提交一次。

相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页