RocketMQ广播消费与集群消费

之前的博客只是为了验证rmq安装是否成功,以及生产消费消息能否正常走通,如果是多个消费端消费生产者发送的消息会有什么样的效果?这个可以用代码校验一下,还是先了解两个比较常用的消费端的术语:
1.集群消费方式
一个ConsumerGroup中的Consumer实例平均分摊消费生产者发送的消息。例如某个Topic有九条消息,其中一个Consumer Group有三个实例(可能是3个进程,或者3台机器),那么每个实例只消费其中的3条消息,Consumer不指定消费方式的话默认是集群消费的,适用于大部分消息的业务
2.广播消费方式
一条消息被多个Consumer消费,几十这些Consumer属于同一个ConsumerGroup,消息也会被ConsumerGroup中的每个Consumer消费一次,广播消费中的ConsumerGroup概念可以认为在消息划分层面没有意义,适用于一些分发消息的场景,比如我订单下单成功了,需要通知财务系统,客服系统等等这种分发的场景,可以通过修改Consumer中的MessageModel来设置消费方式为广播消费

默认集群消费方式

生产者循环生产消息,假设生产20条,启动两个消费者,理论上是分摊消费的
RocketMQ广播消费与集群消费_第1张图片
编写两个消费者,启动消费者
RocketMQ广播消费与集群消费_第2张图片
RocketMQ广播消费与集群消费_第3张图片
发现每个消费者消费了十条数据。

修改消费方式,广播消费测试

RocketMQ广播消费与集群消费_第4张图片
启动两个消费者,理论上是各自消费二十条数据
RocketMQ广播消费与集群消费_第5张图片
每个消费者消费了20条消息,通过日志还可以发现,消费端的消费方式是多线程消费的,进入源码查看
RocketMQ广播消费与集群消费_第6张图片
内部定义了很多默认值,包括消费方式默认集群,线程最小默认20,最大默认64,批量下去消息默认32,消费默认一次消费一条等一些默认信息

你可能感兴趣的:(rocketmq)