当前位置: 首页 > news >正文

【Springboot3】Springboot3 搭建RocketMQ 最简单案例

说来也奇怪,RocketMQ 不能很好的兼容Springboot3,刚开始上手Springboot3集成RocketMQ会发现总是不能实例化RocketMQTemplate,老是启动时报错。本项目采用Springboot3,JDK21 ,Maven 3.9,提供一个非常简单的示例。

案例就只有这5个类,没有建package。
在这里插入图片描述

提前工作

我的RocketMQ服务部署在虚拟机Linux服务器,ip地址是 192.168.218.128,Linux部署RocketMQ比较简单。
运行Springboot3项目之前,需要先把Linux中 mqnamesrvmqbroker两个服务启动起来。

引入依赖

注意rocketmq-spring-boot-starter版本 2.3.1 不要改动,目前2.3.1版本可以兼容5.3.1,其他版本可能出现注入IOC容器失败。

	 <dependency>
         <groupId>org.apache.rocketmq</groupId>
         <artifactId>rocketmq-spring-boot-starter</artifactId>
         <version>2.3.1</version>
     </dependency>
     
     <dependency>
         <groupId>org.apache.rocketmq</groupId>
         <artifactId>rocketmq-client</artifactId>
         <version>5.3.1</version>
     </dependency>
     
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
     </dependency>

yaml中添加RocketMQ配置信息

配置类 application.yaml,注意rocketmq标签不是 spring 标签的子标签,二者是并立的。

spring:
  application:
    name: rocketmq-demo
    
rocketmq:
  name-server: 192.168.218.128:9876
  # 必须初始化生产者,才会实例化RocketMQTemplate
  producer:
    group: producer-group
  consumer:
    group: consumer-group

// 配置后端服务端口是8081
server:
  port: 8081

建立配置类

手动配置RocketMQConfig注入:配置 RocketMQ 消息中间件的相关参数,并通过 Spring 的依赖注入机制将其集成到 Spring Boot 应用程序中。


@Configuration
public class RocketMQConfig {

    @Value("${rocketmq.name-server}")
    private String nameServer;

    @Value("${rocketmq.producer.group}")
    private String producerGroup;

    @Bean
    public RocketMQTemplate rocketMQTemplate() {
        RocketMQTemplate rocketMQTemplate = new RocketMQTemplate();
        DefaultMQProducer defaultMQProducer = new DefaultMQProducer();
        defaultMQProducer.setProducerGroup(producerGroup);
        defaultMQProducer.setNamesrvAddr(nameServer);
        rocketMQTemplate.setProducer(defaultMQProducer);
        return rocketMQTemplate;
    }
}

创建生产者

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

/**
 * @author 10463
 */
@Service
public class RocketMQProducer {

    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    public void sendMessage(String topic, String message) {
        rocketMQTemplate.convertAndSend(topic, message);
    }
}

创建消费者

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

/**
 * @author 10463
 */
@Component
@Service
@RocketMQMessageListener(topic = "test-topic", consumerGroup = "consumer-group")
public class RocketMQConsumer implements RocketMQListener<String> {

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

创建控制类

@Controller
public class MessageController {
    @Autowired
    private RocketMQProducer rocketMQProducer;

    @GetMapping("/sendMessage")
    public String sendMessage(@RequestParam(value = "message", required = true) String message) {
        System.out.println("进入方法");
        rocketMQProducer.sendMessage("test-topic", message);
        return "消息发送成功";
    }
}

测试

启动Application类,代码如下,我没有添加任何额外注解:

@SpringBootApplication
public class MqServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(MqServiceApplication.class, args);
    }
}

使用postMan ,执行GET 请求模拟:
http://localhost:8081/sendMessage?message=HelloRocketMQ
没有postman也没关系,直接在网址中复制回车。

如果部署没问题,在控制台会输出

进入方法
消费者收到 message: HelloRocketMQ

在这里插入图片描述
该案例没有任何复杂注解和层级关系,部署成功后可以进行后续的复杂RocketMQ学习。

相关文章:

  • UE5 GamePlay 知识点
  • Powershell Install deepseek
  • 【JavaEE进阶】Spring MVC(4)-图书管理系统案例
  • Python 下载/安装
  • [免费]微信小程序智能商城系统(uniapp+Springboot后端+vue管理端)【论文+源码+SQL脚本】
  • 23.5.1 WebBrowser与网页交互
  • Python爬虫selenium验证-中文识别点选+图片验证码案例
  • Three.js 快速入门教程【六】相机控件 OrbitControls
  • MySql三大范式
  • 2025寒假周报4
  • Frp部署文档
  • 第J3周:DenseNet算法实战与解析
  • 深度优化方法汇总
  • MyBatis是什么
  • 【Python项目】基于Python的语音数据及标注核对审核系统
  • Javascript数组排序
  • Golang深度学习
  • WPF的页面设计和实用功能实现
  • C#调用126邮箱发送邮件及注意事项,(完整源代码)下载
  • 每日一题——字符串变形
  • 网站样式下载/山东搜索引擎优化
  • 学做西餐的网站/制作网站的全过程
  • 郑州网站推广费用/谷歌浏览器安卓版下载
  • 东莞专业做淘宝网站/国外推广渠道平台
  • 网站做百度竞价/网络营销是什么?
  • 网站 备案/怎么做推广比较成功