RocketMQ消费模式:DefaultMQPushConsumer与DefaultLitePullConsumerImpl
Posted 乐观男孩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RocketMQ消费模式:DefaultMQPushConsumer与DefaultLitePullConsumerImpl相关的知识,希望对你有一定的参考价值。
目录
DefaultMQPushConsumer
DefaultMQPushConsumer在前面的章节中已经学习,由此我们知道:DefaultMQPushConsumer内部自动commit offset,无法手动commit offset,消费到的消息主动推送到Consumer的listener进行业务逻辑处理。
DefaultLitePullConsumerImpl
DefaultLitePullConsumerImpl允许设置是否需要自动commit offset(默认自动),DefaultLitePullConsumerImpl消费到的消息缓存在内存中,Conumser需要主动通过poll从内存中获取消息,进行业务处理。
DefaultLitePullConsumerImpl工作过程
DefaultLitePullConsumerImpl工作过程基本与DefaultMQPushConsumer过程相似。
通过定时任务进行消息的拉取
PullTaskImpl拉取到消息后,封装成ConsumeRequest
直接放入到本地内存缓存consumeRequestCache(类型为BlockingQueue)中
这里由于使用了内存进行消息的缓存,所以PullTaskImpl在定时拉取消息时会对当前缓存的消息数量进行判断,如果缓存数量过大(默认最大缓存10000条),则暂停消息拉取
Push与Pull模式比较
1、Push模式自由可控性不高,几乎近实时的拉取消息,拉取到消息马上推送lisener进行业务处理。
2、Pull模式自由可控性高,可以自主决定何时提交offset,何时进行消息拉取以及可等到大批量消息时再处理。
以上是关于RocketMQ消费模式:DefaultMQPushConsumer与DefaultLitePullConsumerImpl的主要内容,如果未能解决你的问题,请参考以下文章