00:02
好,下边我们来看批量消费消息。呃,批量消费消息啊,先看这这个修改批量属性。呃,这说啊,Consumer的这这个这其实就是它啊,我们consumer不是注册一个,呃消息监听器嘛,这个消息监听器里边有个回调方法叫consume message。这个方法它的第一个参数啊,是个消息列表。但是啊,你别看他是个list,其实它默认情况下每次只能消费一条消息。他每次只能消费一条。如果说要使其一次可以消费多条消息。可以通过修改consumer的。就这个属性,我们consumer的这个属性。啊,Consume batch。呃,就是max。啊,这个属性来指定。
01:01
但是啊,这个指定你你不能说我指定的很大这个值。那这个值。不能超过32,注意啊,不能超过32,为什么呢。呃,因为默认情况下,消费者每次可以拉取的消息最多是多少?32条。就是我这儿消费的这个,这个是消费的消息。拉取是拉取的消息。那你比如说我这儿指定啊,呃,不是32嘛啊,要是八,我这儿如果指定八就这个值啊。如果他生成八一次,我消费八条。消息,那意味着什么?因为你拉取一次。我其实消费几次拉取一批消息啊,32默认是一次,他拉拉32条嘛,所以你拉取一批32条消息啊,我消费几次呢,四次四八三十二嘛,消费四次。
02:03
就给他消费完了。但你要是默认情况下,你这拉取了一批32条,需要消费几次,32次。需要消费32次。明白吧?所以你这啊设置的值,你说我我给它设置成。啊,50。甚至50,你一次消费50,可是我一次就给你拉取了32条,你消费,那你也消费不了50啊,对吧。当然,如果要修改一次拉取的最大值。啊,我们可以通过修改谁。这个consumer还有个属性叫batch size属性来指定。你你可以给他指定这个,比如说我把它设置成啊50是吧,比如说这个是50。然后我这这给它设置成无。是吧,你拉取一次。垃圾一批啊,我消费十次。
03:00
是不是就效率完了?而不是50次。对吧,这里面有两个属性啊,有两个属性。呃,那么这里面存在一个什么问题呢?咱们有哥们就想了,哎,这还不好说。那我把这俩值啊,这俩属性我都给它设成最大的。是吧,比如说这个我给你设置500,那这个呢。那你拉取一次500,我一次性给你消完,这也设成500俩给他设成一样的。是不是越大越好?当然不是。我们看这两个值啊,这两个。呃,首先他说啊,这个值batch size这个默认不是32吗?这个值设置的越大。他每拉取一次需要的时间就越长,这肯定是啊,你一次拉取多嘛。那么你垃圾的多。所以。但网络上传输。出现问题的可能性,这个几率就越高。
04:03
如果在练习过程里边出现了问题。那么这一次这一批次的啊,所有的消息都需要全部重新拉取。所以你就得需要把握好。是不是是不是这个度啊,你不能太大,你也不要太小。太小了,拉取的次数太多了。是吧,啊,这是这是呃,你来取得这个,如果设太大了,它它出出现这个问题的几率就会高,所以这些像这都需要测试的啊,要测试到底摄入多大。另外再说它的值,它的值如果你设置的越大。呃,这边会出什么问题呢?他这个消息啊,Consumer的并发消费能力会越低,这个值越大,并发消费能力越低。而且这批被消费的消息啊,具有相同的消费结果。
05:02
什么意思呢?就是如果说你这一批啊数据。这批数据。在消费过程里面有一个数据,消费过程里边出现了问题,那么这一批数据消费全部作废。得重新再拉取。得重新再消费。啊,因为它指定的一批消息只会使用一个线程来处理。他会用一个线程来处理。你这玩意什么意思啊,就我默认情况下。实际上比如说我32条数据都都有默认值啊,32条数据,我我我我我这每一次是不是就就能处理一条。它可以有,它可以有32个县程,当然前提是你consumer啊,有足够的线程的话,它可以有32个线程来消费。这个消息。
06:00
可以由32个线程来消费,当然你你前提你得使用多线程来消费啊。那如果说。你这儿。设定了啊,设定这个值变大了。那么这一批数据就是这个列表里边这一批数据是由一个县城来消费的。所以你这个值设置的大了。那这里边儿。它的越大的并发度是吧,并发消费能力就会越低。而且有一个出现问题,整个这批数据都出问题了。他们的结果是相同的。是吧?现在处理过程中,只要有一个消息处理异常,则这一批消息。需要全部重新再次消费处理,所以这个东西啊,都需要有个度,越大了并不是越好。啊,这是,呃。这是这是这是关于这个什么批量消费啊,呃,我们需要注意的。
我来说两句