返回

Spring Cloud Alibaba RocketMQ API 快速入门:全面指南

后端

在云原生时代,消息队列服务对于构建弹性、可扩展和松散耦合的应用程序至关重要。在 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);
            }
    );
}