12、RocketMQ实战:RocketMQ工作原理

分布式消息队列RocketMQ

3.4)消息的消费

消费者从Broker中获取消息的方式有两种:pull拉取方式和push推动方式。

消费者组对于消息消费的模式又分为两种:集群消费Clustering和广播消费Broadcasting。

3、 4.1)获取消费类型;

3、 4.1.1)拉取式消费;

Consumer主动从Broker中拉取消息,主动权由Consumer控制。一旦获取了批量消息,就会启动消费过程。

不过,该方式的实时性较弱,即Broker中有了新的消息时消费者并不能及时发现并消费。

由于拉取时间间隔是由用户指定的,所以在设置该间隔时需要注意平衡:间隔太短,空请求比例会增加;间隔太长,消息的实时性太差

3、 4.1.2)推送式消费;

该模式下Broker收到数据后会主动推送给Consumer。该获取方式一般实时性较高。

该获取方式是典型的发布-订阅模式,即Consumer向其关联的Queue注册了监听器,一旦发现有新的消息到来就会触发回调的执行,回调方法是Consumer去Queue中拉取消息;而这些都是基于Consumer与Broker间的长连接的,长连接的维护是需要消耗系统资源的。

3、 4.1.3)对比;

pull:需要应用去实现对关联Queue的遍历,实时性差;但便于应用控制消息的拉取 ;

push:封装了对关联Queue的遍历,实时性强,但会占用较多的系统资源

3、 4.2)消费模式;

3、 4.2.1)广播消费;

*

广播消费模式下,相同Consumer Group的每个Consumer实例都接收同一个Topic的全量消息。即每条 消息都会被发送到Consumer Group中的每个Consumer。

3、 4.2.2)集群消费;

*

集群消费模式下,相同Consumer Group的每个Consumer实例平均分摊同一个Topic的消息。即每条消 息只会被发送到Consumer Group中的某个Consumer。

3、 4.2.3)消息进度保;