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
相关推荐
FQNmxDG4S4 小时前
Java多线程编程:Thread与Runnable的并发控制
java·开发语言
虹科网络安全4 小时前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
axng pmje5 小时前
Java语法进阶
java·开发语言·jvm
rKWP8gKv75 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
老前端的功夫5 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_435287925 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本5 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
yaoxin5211236 小时前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python
极客先躯8 小时前
高级java每日一道面试题-2025年11月24日-容器与虚拟化题[Dockerj]-runc 的作用是什么?
java·oci 的命令行工具·最小可用·无守护进程·完全标准·创建容器的核心流程·runc 核心职责思维导图
用户60648767188968 小时前
AI 抢不走的技能:用 Claude API 构建自动化工作流实战
java