# rocketMq **Repository Path**: myacme/rocket-mq ## Basic Information - **Project Name**: rocketMq - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-30 - **Last Updated**: 2026-02-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RocketMQ 示例项目 本项目提供了两套RocketMQ的生产者和消费者示例,旨在帮助开发者快速掌握RocketMQ的使用方法: 1. **原生API示例**:基于原生RocketMQ API的实现(rocket模块) 2. **Spring Boot示例**:基于Spring Boot Starter的实现(boot模块) ## 项目概述 这是一个全面的RocketMQ学习示例项目,包含以下核心特性: - **双模式示例**:同时提供原生RocketMQ API和Spring Boot Starter两种集成方式 - **自动化测试**:应用启动后自动发送测试消息并监听消费 - **消息元数据展示**:展示主题(Topic)、标签(Tag)、消息ID等关键属性 - **配置校验与连接诊断**:内置`RocketMQConfigChecker`用于配置校验和连接诊断 - **错误处理与日志记录**:完善的异常处理和详细的日志输出 **重要提示**:在运行示例之前,请确保已正确安装和配置RocketMQ服务(详情请参考下方安装指导)。 ## 运行示例 ### 准备工作 1. 确保已安装并启动RocketMQ服务端(详细步骤请参考下方安装指导) 2. 启动RocketMQ服务(Name Server和Broker) 3. 确认配置文件中的Name Server地址(默认为 `127.0.0.1:9876`) ### 运行原生API示例(rocket模块) 1. 进入rocket模块目录 2. 运行 [RocketApplication.java](rocket/src/main/java/com/rocket/ljx/RocketApplication.java) 启动类 3. 应用启动后会自动发送测试消息并监听消息 ### 运行Spring Boot示例(boot模块) 1. 进入boot模块目录 2. 运行 [BootApplication.java](boot/src/main/java/com/rocket/ljx/BootApplication.java) 启动类 3. 应用启动后会自动发送测试消息并监听消息 ## 示例说明 ### 模块职责与结构 - **rocket模块**:原生模块,包含`producer`/`consumer`示例类、`config`(工厂配置)、`RocketApplication`(启动类) - **boot模块**:Spring Boot模块,包含`producer`(生产者)、`consumer`(消费者)、`controller`(HTTP接口)、`service`(业务逻辑) ### 原生API示例 - 生产者:[SimpleProducerExample.java](rocket/src/main/java/com/rocket/ljx/producer/SimpleProducerExample.java) - 消费者:[SimpleConsumerExample.java](rocket/src/main/java/com/rocket/ljx/consumer/SimpleConsumerExample.java) - 使用原生RocketMQ API实现消息的发送和接收 ### Spring Boot示例 - 生产者:[SimpleBootProducerExample.java](boot/src/main/java/com/rocket/ljx/producer/SimpleBootProducerExample.java) - 消费者:[SimpleBootConsumerExample.java](boot/src/main/java/com/rocket/ljx/consumer/SimpleBootConsumerExample.java) - 使用Spring Boot Starter简化RocketMQ集成 ### 其他功能示例 - **事务消息示例**:[TransactionListenerImpl.java](boot/src/main/java/com/rocket/ljx/producer/TransactionListenerImpl.java) 和 [TransactionConsumer.java](boot/src/main/java/com/rocket/ljx/consumer/TransactionConsumer.java) - **Web控制器示例**:[RocketMQController.java](boot/src/main/java/com/rocket/ljx/controller/RocketMQController.java) 提供HTTP接口发送消息 ## 主要特性 1. **自动化测试流程**:应用启动后自动发送测试消息并监听消费 2. **消息元数据展示**:展示主题(Topic)、标签(Tag)、消息ID、时间戳等关键属性 3. **可复用工具封装**:提供`RocketMQConfigChecker`(配置校验)和`RocketMQRunner`(启动钩子)等工具类 4. **错误处理与日志记录**:内置连接异常诊断与详细日志输出 5. **多种消息类型支持**:包括普通消息、事务消息等 ## RocketMQ服务安装与启动 ### 环境要求 - Java 8 或更高版本 - Maven 3.5+(用于构建项目) ### 1. 下载并安装RocketMQ 1. 访问[Apache RocketMQ官网](http://rocketmq.apache.org/)下载最新版本 2. 解压到合适的目录,例如:`C:\rocketmq-all-4.9.3-bin-release` ### 2. 启动RocketMQ服务 #### 手动启动 1. 打开命令提示符窗口 2. 进入RocketMQ安装目录的bin子目录 3. 执行 `start mqnamesrv.cmd` 启动Name Server(在新窗口中运行) 4. 再打开一个命令提示符窗口 5. 执行 `start mqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true` 启动Broker(在新窗口中运行) #### 验证服务 - Name Server默认监听端口:9876 - 可通过telnet或ping命令验证服务是否正常运行 **重要提示**:运行示例前必须确保Name Server和Broker服务均已启动 ## 常见问题解决 ### 连接问题 如果遇到类似以下的连接错误: ``` org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to [127.0.0.1:9876] failed ``` 请按以下步骤排查: 1. **检查RocketMQ服务是否运行** - 确认Name Server和Broker进程是否正在运行 - 检查端口占用情况(Name Server通常使用9876端口) - 如果端口未被占用,请启动RocketMQ服务 2. **检查IP地址和端口配置** - 确认配置文件中的Name Server地址是否正确 - 默认应为 `127.0.0.1:9876` 3. **检查防火墙设置** - 确保Windows防火墙没有阻止相关端口(9876, 10911, 10909等) - 如果有安全软件,请将其加入白名单 4. **使用测试类诊断问题** - 运行 [RocketMQTest.java](rocket/src/test/java/com/rocket/ljx/RocketMQTest.java) 测试类 - 该测试类会首先检查网络连接,然后尝试发送和接收消息 5. **查看详细错误日志** - 检查控制台输出的完整错误堆栈信息 - 查看RocketMQ服务端的日志文件 ### 内存不足问题 如果出现内存不足错误,可以调整JVM参数: ``` export JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" ``` ## 测试类 项目还提供了一个独立的测试类 [RocketMQTest.java](rocket/src/test/java/com/rocket/ljx/RocketMQTest.java),可以直接运行来测试RocketMQ的基本功能。 该测试类是一个交互式工具,提供了以下功能: - 连接状态检查 - 生产者功能测试 - 消费者功能测试 - 完整流程测试 运行前请确保RocketMQ服务已启动。可以通过命令行运行: ```bash cd rocket mvn test -Dtest=RocketMQTest ``` 或者在IDE中直接运行该类的main方法。 ## 项目配置 项目包含两个模块的配置文件: - [rocket/src/main/resources/application.yml](rocket/src/main/resources/application.yml) - [boot/src/main/resources/application.yml](boot/src/main/resources/application.yml) 配置项主要包括: - `rocketmq.name-server`: Name Server地址,默认为`127.0.0.1:9876` - `rocketmq.producer.group`: 生产者组名 - `rocketmq.consumer.group`: 消费者组名 ## 贡献 欢迎提交Issue和Pull Request来改进此项目。 ## 许可证 本项目采用 MIT 许可证。