RocketMQ——Consumer消费模式及两种消费者辨析(DefaultMQPushConsumer和DefaultMQPullConsumer)详解编程语言

RocketMQ的Consumer有两种消费模式,通过
consumer.setMessageModel(MessageModel.BROADCASTING)
consumer.setMessageModel(MessageModel.CLUSTERING)设置

广播模式

当使用广播消费模式时,MQ 会将每条消息推送给集群内所有订阅该topic和tag的客户端,保证消息至少被每台机器消费一次(若有多个集群都关注这个topic和tag,则每个集群的每个机器都消费一次)。
消息发送失败不会重投
消费进度由consumer维护,broker并不关心一条消息有没有消费成功
在这里插入图片描述

集群模式

该模式下,一条消息只要被关注该topic和tag的集群只消费一次就行(如果有多个集群(每个集群(group)里有多台机器)都关注了这个topic和tag,则每个集群都挑随机一个机器消费一次)。
消息失败会重投,但不保证重投到同一机器上
消费进度由broker维护
在这里插入图片描述

经实验表明

在集群模式下开多个consumer,发送时只有一个consumer会消费该消息,且每次启动producer时,消费消息多consumer可能不同

DefaultMQPushConsumer和DefaultMQPullConsumer

DefaultMQPushConsumer大部分控制直接由系统完成,大部分场景使用这种Consumer就行(其实上push的底层也是使用pull方式)
DefaultMQPullConsumer大部分功能由程序员自行配置
在这里插入图片描述
pull和push实际上是两个观察消息的角度。从Broker端观察就是往Consumer端推送消息,这时一切配置Broker都做好了,所以不需要我们做过多的配置。从Consumer端观察就是从Broker端拉取消息,所以各种拉取的配置都要我们自行配置。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/20585.html

(0)
上一篇 2021年7月19日 23:34
下一篇 2021年7月19日 23:34

相关推荐

发表回复

登录后才能评论