SpringBoot3.0 + RocketMq 构建企业级数据中台(完结)

262 阅读2分钟

Spring Boot 3.0 是一个功能强大的 Java 开发框架,而 RocketMQ 是阿里巴巴开源的分布式消息中间件,结合两者可以实现高效、可靠的消息传递。下面将详细介绍如何在 Spring Boot 3.0 项目中集成 RocketMQ 进行消息的发送和接收。

SpringBoot3.0 + RocketMq 构建企业级数据中台完结_优课it

环境准备

  • JDK 17:Spring Boot 3.0 要求 JDK 版本至少为 17。
  • Maven:用于项目的依赖管理。
  • RocketMQ:需要提前安装并启动 RocketMQ 服务,可参考 RocketMQ 官方文档 进行安装。

创建 Spring Boot 3.0 项目

可以使用 Spring Initializr(start.spring.io/) 来创建一个新的 Spring Boot 3.0 项目,添加以下依赖:

  • Spring Web

  • Spring Boot Starter RocketMQ

也可以在 pom.xml 中手动添加依赖:

收起

xml

<dependencies>
    <!-- Spring Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Spring Boot Starter RocketMQ -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-rocketmq</artifactId>
    </dependency>
</dependencies>

配置 RocketMQ

在 application.properties 或 application.yml 中配置 RocketMQ 的连接信息:

收起

properties

# RocketMQ 名称服务地址
rocketmq.name-server=localhost:9876
# 生产者组名
rocketmq.producer.group=my-producer-group

或者使用 application.yml 配置:

收起

yaml

rocketmq:
  name-server: localhost:9876
  producer:
    group: my-producer-group

消息生产者

创建一个消息生产者服务类,用于发送消息到 RocketMQ:

收起

java

import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class RocketMQProducerService {

    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    public void sendMessage(String topic, String message) {
        SendResult sendResult = rocketMQTemplate.syncSend(topic, message);
        System.out.println("消息发送结果:" + sendResult);
    }
}

消息消费者

创建一个消息消费者服务类,用于从 RocketMQ 接收消息:

收起

java

import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Service;

@Service
@RocketMQMessageListener(topic = "my-topic", consumerGroup = "my-consumer-group")
public class RocketMQConsumerService implements RocketMQListener<String> {

    @Override
    public void onMessage(String message) {
        System.out.println("接收到消息:" + message);
    }
}

控制器示例

创建一个控制器类,用于测试消息的发送:

收起

java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MessageController {

    @Autowired
    private RocketMQProducerService producerService;

    @GetMapping("/sendMessage")
    public String sendMessage(@RequestParam String message) {
        producerService.sendMessage("my-topic", message);
        return "消息发送成功";
    }
}

启动项目并测试

启动 Spring Boot 项目,访问 http://localhost:8080/sendMessage?message=Hello,RocketMQ,如果一切正常,你将在控制台看到消息发送结果和消费者接收到的消息。

注意事项

  • 主题和组名:确保生产者和消费者使用的主题和组名一致,否则消息可能无法正常发送和接收。

  • 异常处理:在实际应用中,需要对消息发送和接收过程中可能出现的异常进行处理,例如网络异常、消息队列满等。

  • 消息顺序性:如果需要保证消息的顺序性,需要使用 RocketMQ 的顺序消息功能。

通过以上步骤,你就可以在 Spring Boot 3.0 项目中集成 RocketMQ 实现消息的发送和接收。