Springboot使用RocketMQ

本文详细介绍了RocketMQ的安装过程,包括下载、配置环境变量、启动服务等步骤,并提供了可视化控制台的搭建指南。接着,讲解了SpringBoot项目中使用RocketMQ发送和接收普通消息、事务消息以及使用Stream发送消息的方法,包括配置、依赖添加及代码示例。此外,还对比了生产端和消费端的差异,以及Stream发送的默认模式和自定义通道的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装

1、本体

  1. 前往官方网站下载最新版本

  2. 解压后配置环境变量
    在这里插入图片描述
    在这里插入图片描述

  3. 跳转至bin目录下,双击运行“mqnamesrv.cmd”来启动“nameserver”服务
    在这里插入图片描述

  4. 在当前目录下使用命令启动“broker”服务,“autoCreateTopicEnable=true”使其可以自动注册主题,否则需要手动创建。如果没有自动创建,而且发送时没有对应的主题,则会报错无法发送信息

    start mqbroker.cmd -n nameserver地址:9876 autoCreateTopicEnable=true

2、可视化控制台

  1. 前往gitHub下载控制台代码地址
  2. 解压缩后进入到“rocketmq-console”项目的配置文件路径下

rocketmq-externals\rocketmq-console\src\main\resources

  1. 修改配置文件,控制台端口号和“nameserver”的地址。其中“nameserver”地址可以不写,在启动控制台后再配置
    在这里插入图片描述
  2. 跳转到“rocketmq-console”项目的根目录,执行“maven”的打包命里

mvn clean package -Dmaven.test.skip=true

  1. 跳转到根目录下的“target”目录,运行打包好的jar包
  2. 打开网页查看控制台
    在这里插入图片描述

二、Springboot项目

1、普通消息

消息发送端

  1. 添加依赖,版本号可以到maven仓库中查找
    在这里插入图片描述
  2. 添加配置
    在这里插入图片描述
  3. 普通使用
    在这里插入图片描述

消息接收端

  1. 添加依赖
    在这里插入图片描述
  2. 编写配置
    在这里插入图片描述
  3. 创建普通监听类
    在这里插入图片描述

2、带有事务的消息

流程
在这里插入图片描述

发送端/服务端

  1. 使用“sendMessageInTransaction”方法发送消息
    在这里插入图片描述
  2. 创建本地事务执行类
    在这里插入图片描述
    1)类需要实现“RocketMQLocalTransactionListener”接口,并重写两个方法。添加“@RocketMQTransactionListener”注解。
    2)“RocketMQLocalTransactionState”有三个值,为COMMIT(发送)、ROLLBACK(回滚)、UNKONW(不清楚),当返回值为“COMMIT”时,消息才会发送给客户端
    3)回调方法在对应流程中的第五步

接收端/客户端

和正常的一样,无任何变化

3、使用stream发送

1)默认模式发送(单通道)

发送端
  1. 添加依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
</dependency>
  1. 书写配置
    在这里插入图片描述

  2. 添加注解:注解中的Class类为“Source
    在这里插入图片描述

  3. 编写发送代码
    在这里插入图片描述

消费端
  1. 引入依赖,和发送端的相同
  2. 书写配置
    在这里插入图片描述
  3. 添加注解:注解中的Class类为“Sink
    在这里插入图片描述
  4. 编写消费代码:消费类需要添加“@Component”和“@StreamListener”注解
    “@StreamListener”的“value”值得含义为,“channel”通道名
    在这里插入图片描述

2)自定义通道发送

发送端
  1. 引入依赖和默认相同
  2. 创建自定义通道,发送端的注解为“@Output
    在这里插入图片描述
  3. 编写配置
    在这里插入图片描述
  4. 添加注解
    在这里插入图片描述
  5. 编写发送代码,引用你的通道类,通过该通道发送消息
    在这里插入图片描述
消费端
  1. 引入依赖,相同
  2. 创建消费端的通道类,消费端的注解为“@Input
    在这里插入图片描述
  3. 编写配置,多个消费端的通道的组名不能相同
    在这里插入图片描述
  4. 添加注解
    在这里插入图片描述
  5. 创建消费类
    在这里插入图片描述

生产端和消费端的差别

  1. 生产端的组在配置文件中添加,消费端的组在类的注解中添加
  2. 如果发送带有事务的消息,生产端需要额外编写本地事务的处理代码,消费端不需要任何改变

stream发送

  1. 发送端的默认类为“Source”,消费端的默认类为“Sink”
  2. 发送端的固定搭配为

@Output(通道名)
MessageChannel output()

  1. 消费端的固定搭配为

@Input(通道名)
SubScribableChannel input()

  1. 如何分辨“input”和“output”,以服务为主体,向外发送消息时使用“output”,接收消息使用“input”
  2. 发送端配置中无需添加组名,消费端的组名一定要有
### Spring Boot 集成 RocketMQ 教程 #### 创建 Spring Boot 应用程序 为了创建一个新的 Spring Boot 项目,可以使用 Spring Initializr 或者命令行工具。通过 Spring Boot CLI 可以快速初始化一个新应用: ```bash spring init -d=web,actuator -n=rocketmq-demo rocketmq-demo ``` 这会生成一个名为 `rocketmq-demo` 的基础 Spring Boot 工程[^1]。 #### 添加依赖项 在项目的 `pom.xml` 文件中加入 RocketMQ 客户端库作为 Maven 依赖: ```xml <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> ``` 确保版本号是最新的稳定版之一[^3]。 #### 配置 RocketMQ 连接参数 编辑 `application.properties` 来指定 RocketMQ 名字服务器地址和其他必要的配置选项: ```properties rocketmq.name-server=localhost:9876 rocketmq.producer.group=my-producer-group ``` 这些设置允许应用程序连接到本地运行的名字服务实例并定义生产者的组名[^4]。 #### 编写消息发送代码 下面是一个简单的例子来展示如何向主题发布一条消息: ```java import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MessageController { @Autowired private RocketMQTemplate rocketMqTemplate; @GetMapping("/send") public String sendMessage() { this.rocketMqTemplate.convertAndSend("test-topic", "Hello from Spring Boot!"); return "Message sent!"; } } ``` 这段代码展示了 RESTful API 接口 `/send`, 当访问该路径时将会触发一次消息发送操作给定的主题上[^5]. #### 启动测试 完成上述步骤之后就可以启动 Spring Boot 应用了,在控制台输入如下指令即可开启服务: ```bash mvn spring-boot:run ``` 现在可以通过浏览器或其他 HTTP 请求工具调用刚才编写的接口来进行实际的消息传递尝试[^6]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值