RocketMQ详解(9)——Consumer简介
一. RocketMQ的消费模式
- 在RocketMQ中,Consumer分为2类:MQPullConsumer和MQPushConsumer。其本质都是pull模式,即Consumer轮询从Broker拉取消息。
- 在push方式中,Consumer把轮询的过程封装了。当应用注册MessageListener后,Broker接收到消息时,会自动回调MessageListener的consumeMessage()方法,在Consumer端执行消费。对于应用来说,这个过程好像是消息自动推送过来的。该方式Consumer与Broker建立了长连接。
- 在pull方式中,需要应用自己实现拉取消息的过程,首先通过消费的Topic拿到MessageQueue集合,遍历MessageQueue集合,然后针对每个MessageQueue批量拉取消息。取完一次后,记录MessageQueue下一次要取的起始offset,取完后再换下一个MessageQueue。该方式Consumer与Broker建立的是短连接。
二. Consumer相关配置参数
- consumeFromWhere Consumer启动后,默认从MessageQueue的什么位置开始消费,可以设置为ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET从队尾开始消费或ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET从队头开始消费。
- consumeThreadMin 消费者线程最小数量,默认20
- consumeThreadMax 消费者线程最大数量,默认64
- pullThresholdForQueue 拉取消息时,本地消息队列缓存的最大消息数量,默认1000
- consumeMessageBatchMaxSize 批量消费时,一次最多消费多少条记录,默认1
- pullBatchSize 批量拉取消息时,一次最多拉取的消息条数,默认32
- pullInterval 消息拉取线程执行拉取消息的时间间隔,默认0