1、实现多消费者需要注意的地方
1.1、报错java.lang.RuntimeException: java.lang.IllegalStateException: Failed to start RocketMQ push consumer

1.2、解决方案:实现RocketMQPushConsumerLifecycleListener接口,需要设置instanceName 为不同内容

2、生产者发送简单消息代码

@Autowired
private RocketMQTemplate rocketMQTemplate;
@GetMapping(value = "/sendSimpleMsg")
public Object sendSimpleMsg() {
for (int i = 0; i < 10; i++) {
rocketMQTemplate.syncSend(MqAnnotionConstant.STUDY_SIMPLE_TOPIC, "这是一个简单消息"+i);
}
return "发送结束";
}
3、消费者实现代码
package com.wangzhan.listener;
import com.wangzhan.constant.MqAnnotionConstant;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.spring.annotation.MessageModel;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.apache.rocketmq.spring.core.RocketMQPushConsumerLifecycleListener;
import org.springframework.stereotype.Component;
@Component
@RocketMQMessageListener(topic = MqAnnotionConstant.STUDY_SIMPLE_TOPIC, consumerGroup = MqAnnotionConstant.STUDY_SIMPLE_GROUP, messageModel = MessageModel.BROADCASTING)
public class SimpleMsgListener implements RocketMQListener<String>, RocketMQPushConsumerLifecycleListener {
@Override
public void onMessage(String s) {
System.out.println("consumer1消费消息:" + s);
}
@Override
public void prepareStart(DefaultMQPushConsumer defaultMQPushConsumer) {
defaultMQPushConsumer.setInstanceName("consumer1");
}
}
@Component
@RocketMQMessageListener(topic = MqAnnotionConstant.STUDY_SIMPLE_TOPIC, consumerGroup = MqAnnotionConstant.STUDY_SIMPLE_GROUP, messageModel = MessageModel.BROADCASTING)
public class SimpleMsgListener2 implements RocketMQListener<String>, RocketMQPushConsumerLifecycleListener {
@Override
public void onMessage(String s) {
System.out.println("consumer2消费消息:" + s);
}
@Override
public void prepareStart(DefaultMQPushConsumer defaultMQPushConsumer) {
defaultMQPushConsumer.setInstanceName("consumer2");
}
}
4、实现效果
4.1、广播模式

4.2、集群模式

5、完整代码(包含原生api + 注解方式)测试例子
代码地址