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
相关推荐
abluckyboy3 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
2301_818732063 小时前
前端调用控制层接口,进不去,报错415,类型不匹配
java·spring boot·spring·tomcat·intellij-idea
2501_941982053 小时前
深度对比:Java、Go、Python 实现企微外部群推送,哪个效率更高?
java·golang·企业微信
大雨淅淅3 小时前
Eureka从入门到精通:开启微服务架构的钥匙
微服务·云原生·eureka·架构
qq_404643343 小时前
Eureka 核心概念
微服务·eureka
码字的字节3 小时前
Spring Cloud服务注册与发现(一):手把手搭建Eureka Server,详解高可用配置
spring·spring cloud·eureka
大厂资深架构师3 小时前
Spring Cloud Eureka在后端系统中的服务剔除策略
spring·spring cloud·ai·eureka
马猴烧酒.4 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库
sino爱学习4 小时前
高性能线程池实践:Dubbo EagerThreadPool 设计与应用
java·后端