00:00
好,接下来呢,我们来看一下,手动提交offset,双击打开。虽然呢,这个自动提交offset呢,诶大家感觉非常方便是吧,但是呢,大家想这样一个场景是吧,你这个自动提交offset,它是不是不是那么特别精准呢。哎,也就说你提前一直有可能会导致提前消费。那我希望呢,就是哎,我消费一条数据,我就提交一次outside,那这样呢,由用户自己来掌握对应的这个时间,那这样是不是更灵活一些,哎,我希望做到这点,那做到这点那它底层原理是怎么实现的呢?啊,仍然是生产者向这个分区里面发送数据,那么消费者呢,不断的来拉取数据,那好。你拉取完数据之后,那么剩下的事儿你得进行判断提交。那你得进行一个提交,那提交呢分两种情况啊,也就是说你将来要提交的时候呢,分为同步提交和异步提交两种方式,同步和异步呢,对于大家来说并不陌生,比如说你拉取一波数据之后。
01:04
那我是等这波数据提交完off outside之后,哎,然后再拉取下一波数据,那这叫什么呢。这个是不是就叫同步提交啊啊,也就说必须得把这波数据的offset提交完了,我再进行后续的一个消费,那就叫同步,那所谓的异步呢。第一步的方式啊,就是哎,我这边消费数据好,哎,我已经提交了offet,但是这个提交ET不一定成功啊,我就不管了,我接下来我去消费下一波数据了。哎,然后扔过去再消费下一波数据再扔过去,扔过去之后他慢慢的让他自己去,哎,这个提交这个ET是这样一套流程啊叭如说他不在这等待。那行,那这是两种不同的方式,那就是同步提交呢,必须等待奥赛的提交完毕之后,再去消费下一批数据。那么E步提交呢,E步提交啊,就是发送完off请求之后,就开始消费下一批出去了,哎,只要告诉他你提交off,那剩下的事儿呢,我继续消费我的数据啊。
02:07
比如说保证我核心功能的一个完成。那那下面呢,我们来写一下这个对应的代码啊,代码这样啊,我这个里面把它停掉啊,我复制一个消费者CTRLCCTRL。带汗的。呃,先来一个同步提交。那所谓的同步提交啊,这里面呢,我们改变一个参数,首先呢,你得把这个自动提交修改为手动提交。手动提交,点put。Consumer很,嗯,那这里面呢,就是enable or to commit,它默认是to,那你要给它改成false。行,哎,那这也就完毕了,那改完它之后,你说用户要手动提交,那你得真的去手动提交,那在哪呢,在这。你上面这块呢,不是拉取消费数据吗?对吧,那这块呢,就是手动提交offset。
03:05
那调用这个consumer.commit提交,那本次呢,我先采用的是同步,那同步呢就是SYNC走。就是它那下面呢,我们来运行一下,哎,如果说我运行完毕之后,它仍然能够消费到数据,那就说明这个手动提交是OK的啊。哎,启动,接下来我们调用这个发送数据走。我这边发送数据,我看一下有没有数据是吧?哎,这边呢,仍然能够接收到数据,说明这个功能呢是OK的,那下面呢,我们再来实现一下这个异步提交。哎,采用手动提交啊,上面这个参数呢,你是不用改的,仍然是采用手动提交。那么下面这地方就变了,这个地方就不用这个方法了哈,用这个在正面点看这哎。Commit提交好,那这个呢,就是异步提交的方式,那我们再来运行一下,如果说他仍然能够消费到数据,那就说明异步提交这种方式也是OK的哈,好。
04:14
好,那下面呢,我给它发送数据。好,发送完毕之后,你看这里面立即也能够消费到数据,那就说明异步这种方式也是OK的啊。那在生产环境当中用哪一种方式比较多呀?哎,通常呢,就是采用这种异步提交的方式比较多一些啊,追求的是效率。
我来说两句