1 问题背景
前面研究了Docker单机、双主集群部署RocketMQ容器,现在使用SpringBoot整合RocketMQ看看RocketMQ是否搭建成功了。
2 SpringBoot整合RocketMQ
2.1 引入依赖
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
2.2 配置yml
rocketmq:
name-server: 192.168.199.130:9876;192.168.199.131:9876
producer:
group: producer-demo1
解释:
- name-server填上自己namesrv的地址
- 更多的配置可以参考RocketMQProperties类
2.3 定义消息生产者
@Component
@Slf4j
public class OrderProducer {
@Autowired
private RocketMQTemplate rocketMQTemplate;
public void send() {
// 发送消息
rocketMQTemplate.convertAndSend("Topic1:TagA", "发送普通消息");
log.info("发送普通消息成功");
// 发送spring的Message
rocketMQTemplate.send("Topic1:TagA", MessageBuilder.withPayload("发送Spring的Message").build());
log.info("发送spring的message成功");
// 发送异步消息
rocketMQTemplate.asyncSend("Topic1:TagA", "发送异步消息", new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
log.info("发送异步消息成功");
}
@Override
public void onException(Throwable throwable) {
log.info("发送异步消息失败");
}
});
// 发送顺序消息
rocketMQTemplate.syncSendOrderly("Topic1", "发送顺序消息1", "123");
log.info("发送顺序消息1成功");
rocketMQTemplate.syncSendOrderly("Topic1", "发送顺序消息2", "124");
log.info("发送顺序消息2成功");
rocketMQTemplate.syncSendOrderly("Topic1", "发送顺序消息3", "125");
log.info("发送顺序消息3成功");
}
}
2.4 定义消息消费者
@Component
@RocketMQMessageListener(topic = "Topic1", consumerGroup = "consumer-demo1")
@Slf4j
public class OrderConsumer implements RocketMQListener<String> {
@Override
public void onMessage(String s) {
log.info("收到消息:{}", s);
}
}
2.5 测试
@RestController
public class RocketmqController {
@Autowired
private OrderProducer orderProducer;
@GetMapping("/test")
public void test() {
orderProducer.send();
}
}
访问
localhost:8083/test
发送测试请求
访问
localhost:10084/rmqconsole
,点击Message
标签,选择topic
查看消息