Springboot使用RocketMQ

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

一、安装

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. 发送端配置中无需添加组名,消费端的组名一定要有
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值