Spring Cloud微服务搭建四、集成RocketMQ消息队列

目录

简介

下载

配置环境变量

启动

启动NameServer

启动Broker

[验证 RocketMQ 功能](#验证 RocketMQ 功能)

启动生产者

[RocketMq Dashboard](#RocketMq Dashboard)

项目集成

测试


简介

RocketMQ是阿里巴巴开源的分布式消息中间件,基于Java开发,支持高并发、低延迟的消息处理,适用于电商、金融等高要求场景。

  • 高吞吐量‌:单机支持十万级消息吞吐。
  • 低延迟‌:99.6%的消息延迟在1毫秒内。
  • 高可靠性‌:支持事务消息、顺序消息,避免数据丢失。
  • 多场景支持‌:涵盖实时日志、分布式事务、消息推送等。
特性 ActiveMQ RabbitMQ RocketMQ Kafka
吞吐量 万级 万级 十万级 十万级
延迟性 ms级 us级 ms级 ms级以内
功能丰富度 一般 丰富 最丰富 单一

下载

RocketMQ5.1.4

地址:https://rocketmq.apache.org/zh/download/

由于RocketMQ默认预设的JVM内存是2G,这是RocketMQ给我们的最佳配置。如果需要调整下JVM内存大小。修改的方式是直接修改runserver

配置环境变量

变量名: ROCKETMQ_HOME

变量值: E:\cloud\rocketmq

JVM参数调整

复制代码
runserver
set "JAVA_OPT=%JAVA_OPT% -server -Xms256m -Xmx256m -Xmn256m"

runbroker
set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m"

启动

启动NameServer
复制代码
start mqnamesrv.cmd
启动Broker
复制代码
start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true

autoCreateTopicEnable=true自动创建Topic

或者修改broker.conf资源配置文件,允许自动创建Topic与添加namesrvAddr地址,建议线下开启,线上关闭

PS:

1、中途断网或者中断会导致一些文件损坏。

如果不是第一次运行rocketmq,则将C:\Users\Administrator\store文件夹下的文件全部删除,再次输入命令,则可以正常启动。

2、或者切换到cmd窗口跳转到对应bin目录执行相应命令

复制代码
# /conf/broker.conf
autoCreateTopicEnable=true
namesrvAddr=localhost:9876
listenPort=10911
服务 默认端口 修改参数
NameServer 9876 -n 127.0.0.1:9877
Broker 10911 -p 10912

验证

验证 RocketMQ 功能

RocketMQ 自带了发送与接收消息的脚本 tools.cmd,用来验证 RocketMQ 的功能是否正常。执行以下命令启动消费者

复制代码
set NAMESRV_ADDR=127.0.0.1:9876

tools.cmd org.apache.rocketmq.example.quickstart.Consumer
启动生产者
复制代码
set NAMESRV_ADDR=127.0.0.1:9876

tools.cmd org.apache.rocketmq.example.quickstart.Producer

如有"the broker's disk is full"则是Broker磁盘已满,需要提升内存配置

启动成功后,生产者会发送1000个消息,然后自动退出。


验证成功!

RocketMq Dashboard

下载或者克隆:https://github.com/apache/rocketmq-dashboard

打开项目,找到 application.yml 文件

启动项目,访问:http://localhost:8080/#/

RocketMQ Dashboard的横向菜单分为八个部分,分别是OPS(运维)、Dashboard(驾驶舱)、Cluster(集群)、Topic(主题)、Consumer(消费者)、Broker(代理)、Config(配置)和Admin(管理员)

新增主题

项目集成

pom

复制代码
         <dependency>
                <groupId>org.apache.rocketmq</groupId>
                <artifactId>rocketmq-spring-boot-starter</artifactId>
                <version>2.2.3</version>
            </dependency>

yml文件

复制代码
rocketmq:
  name-server: 127.0.0.1:9876 # NameServer地址
  producer:
    send-message-timeout: 3000
    retry-times-when-send-failed: 2
    # 生产者组名
    group: my-producer-group

生产者

复制代码
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @author admin
 * @desc 测试
 * @date 2026/2/2 22:11
 */
@RestController
public class DemoController {

    @Resource
    private RocketMQTemplate rocketMqTemplate;

    @RequestMapping("/test")
    public String test() {
        rocketMqTemplate.convertAndSend("TopicTest", "test-message,发送了一条消息");
        return "ok";
    }
}

消费者

复制代码
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Service;

/**
 * @author admin
 * @date 2026/2/2 22:28
 */
@Service
@RocketMQMessageListener(
        topic = "TopicTest",
        consumerGroup = "TopicTestGroup"
)
public class MQConsumerService implements RocketMQListener<String> {

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

测试

执行:http://localhost:9998/test

组件版本清单

当前Spring Cloud 微服务组件版本清单

  • JDK: 1.8
  • MySQL: 8.0.33
  • Nacos 2.2
  • Spring Boot2.7.18
  • Spring Cloud2021.0.9
  • Spring Cloud Alibaba 2021.0.5.0
  • Hutool5.8.25
  • Lombok 1.18.26
  • XxlJob2.5.0
  • Hutool5.8.25
  • Lombok 1.18.26
  • RocketMQ 5.1.4
相关推荐
zzzll111123 分钟前
Spring Boot 入门指南:从零开始构建微服务
spring boot·后端·微服务
李可以量化37 分钟前
Tornado 从了解到精通(一)下:异步与非阻塞 IO 核心原理
java·数据库·tornado
yurenpai(27届找实习中)38 分钟前
从销售订单推送 MES 看懂微服务调用(二):DTO 转换与 OpenFeign 调用
java·微服务·架构·服务调用
Patrick在香港44 分钟前
Python爬虫框架实战:优雅抓取香港政府公开API数据的通用方案
java·开发语言·爬虫·python·ai编程·数据可视化·可用性测试
hey_sml1 小时前
MySQL常用操作速记:从字符集到游标全解析
java·开发语言·mysql
掉鱼的猫1 小时前
Solon AOT & Native:三段式编译,从 Java 到原生可执行文件
java·云原生
Java内核笔记1 小时前
容错能力进入 spring-core:Spring Boot 4 原生重试机制全解析
java·后端
未秃头的程序猿1 小时前
虚拟线程上线一周后翻车了——pinning问题排查实录
java·后端·架构
wuminyu1 小时前
JDK21解决虚拟线程IO阻塞原理剖析
java·linux·c语言·jvm·c++
带刺的坐椅1 小时前
Solon AOT & Native:三段式编译,从 Java 到原生可执行文件
java·aot·solon·native