返回
Spring Cloud Alibaba RocketMQ API 快速入门:全面指南
后端
2023-12-10 21:21:50
在云原生时代,消息队列服务对于构建弹性、可扩展和松散耦合的应用程序至关重要。在 Java 生态系统中,Apache RocketMQ 作为一款成熟的消息队列解决方案脱颖而出,而 Spring Cloud Alibaba 提供了无缝集成 RocketMQ 的特性,让开发人员可以轻松利用其强大的功能。
本文将深入探讨使用 Spring Cloud Alibaba RocketMQ API 的快速入门指南,从配置到生产和消费消息,全面阐述 RocketMQ 的基本用法。
配置 Spring Cloud Alibaba RocketMQ
Maven 依赖
在 Spring Boot 应用程序的 pom.xml 文件中添加以下依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-rocketmq</artifactId>
<version>3.3.0</version>
</dependency>
配置属性
在 application.properties 文件中配置 RocketMQ 属性:
# RocketMQ 服务器地址,多个地址逗号分隔
spring.rocketmq.namesrvAddr=127.0.0.1:9876
# 生产者组名称
spring.rocketmq.producer.groupName=my-producer-group
# 消费者组名称
spring.rocketmq.consumer.groupName=my-consumer-group
# 默认主题
spring.rocketmq.defaultTopic=my-topic
生产消息
注解方式
使用 @RocketMQMessage
注解标记要发送的消息:
@RestController
public class ProducerController {
@Autowired
private RocketMQTemplate rocketMQTemplate;
@PostMapping("/send")
public void send(@RequestBody String message) {
rocketMQTemplate.convertAndSend("my-topic", message);
}
}
模板方式
也可以直接使用 RocketMQTemplate 手动发送消息:
rocketMQTemplate.send("my-topic", MessageBuilder.of(message).build());
消费消息
注解方式
使用 @RocketMQMessageListener
注解标记消息处理方法:
@RocketMQMessageListener(topic = "my-topic", consumerGroup = "my-consumer-group")
public class Consumer {
@RocketMQMessage(topic = "my-topic")
public void onMessage(String message) {
System.out.println("Received message: " + message);
}
}
模板方式
也可以通过 RocketMQListenerContainer 消费消息:
@Bean
public RocketMQListenerContainer listenerContainer() {
return new RocketMQListenerContainer(rocketMQTemplate, consumerGroup,
(RocketMQMessageListener) (message, context) -> {
System.out.println("Received message: " + message);
}
);
}