8 SpringBoot整合RocketMQ实现消费者广播模式和负载均衡模式

8 SpringBoot整合RocketMQ实现消费者广播模式和负载均衡模式_第1张图片

如上图,假如我们有多个消费者,消息生产者发送的消息,是每一个消费者都消费一次呢?还是通过一些机制,比如轮询机制,每个消息只被某一个消费者消费一次呢?

这里涉及到消费者的消费模式,一种是广播模式,还有一种是负载均衡模式;

广播模式是每个消费者,都会消费消息;

负载均衡模式是每一个消费只会被某一个消费者消费一次;

我们业务上一般用的是负载均衡模式,当然一些特殊场景需要用到广播模式,比如发送一个信息到邮箱,手机,站内提示;

我们可以通过@RocketMQMessageListenermessageModel属性值来设置,MessageModel.BROADCASTING是广播模式,MessageModel.CLUSTERING是默认集群负载均衡模式;

我们先集群负载均衡测试,加上messageModel=MessageModel.CLUSTERING

8 SpringBoot整合RocketMQ实现消费者广播模式和负载均衡模式_第2张图片

我们启动两个实例,先启动一个RocketmqConsumer消费者实例,端口8084

8 SpringBoot整合RocketMQ实现消费者广播模式和负载均衡模式_第3张图片

8 SpringBoot整合RocketMQ实现消费者广播模式和负载均衡模式_第4张图片

编辑配置,

8 SpringBoot整合RocketMQ实现消费者广播模式和负载均衡模式_第5张图片

Single instance only的勾选去掉,然后点OK按钮;

然后修改代码,启动端口改成8085

8 SpringBoot整合RocketMQ实现消费者广播模式和负载均衡模式_第6张图片

消费者输出信息改下;

8 SpringBoot整合RocketMQ实现消费者广播模式和负载均衡模式_第7张图片

最后我们再启动一个消费者实例;

8 SpringBoot整合RocketMQ实现消费者广播模式和负载均衡模式_第8张图片

我们启动消息生产者测试:

启动后,两个消费者控制台分别输出:

8 SpringBoot整合RocketMQ实现消费者广播模式和负载均衡模式_第9张图片

8 SpringBoot整合RocketMQ实现消费者广播模式和负载均衡模式_第10张图片

根据实验,我们发现消息被两个消费者负载均衡随机消费掉了。

我们再来测试下广播模式;修改messageModel=MessageModel.BROADCASTING

8 SpringBoot整合RocketMQ实现消费者广播模式和负载均衡模式_第11张图片

8 SpringBoot整合RocketMQ实现消费者广播模式和负载均衡模式_第12张图片

测试发现,两个消费者客户端把消息都各自消费了一遍。广播模式测试OK;

微信搜一搜公众号【java1234】关注这个放荡不羁的程序员,关注后回复【资料】有我准备的一线大厂笔试面试资料以及简历模板。

你可能感兴趣的:(RocketMQ,java,rabbitmq,java,消息队列)