# SpringBoot集成RocketMQ **Repository Path**: xiaopengxiaopeng/spring-boot-integration-RocketMQ ## Basic Information - **Project Name**: SpringBoot集成RocketMQ - **Description**: Windows上单机部署RocketMQ,并进行SpringBoot集成RocketMQ的简单实践。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-08-25 - **Last Updated**: 2023-10-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 简单实践 首先搭建单机开发环境。在Linux环境下部署RocketMQ教程较多,可直接参考快速开始 | [RocketMQ (apache.org)](https://rocketmq.apache.org/zh/docs/quickStart/01quickstart),我以在Windows环境下搭建RocketMQ为例。 本机环境: RocketMQ运行JDK:1.8.0_261 IntelliJ IDEA 2020.2.4 SpringBoot项目运行JDK:11.4.06 SpringBoot版本:2.6.13 ### 1.下载RocketMQ 从RockitMQ官网 http://rocketmq.apache.org/dowloading/releases/ 下载最新的release包。 Windows需安装JDK1.8以上。 安装后解压即可 ### 2.最小应用启动 RocketMQ自身分为 **NameServer** 和 **Broker** 两个部分,用作本机开发实践学习的最小应用,应该分别启动一个NameServer和一个Broker节点。 #### 2.1 配置变量 配置ROCKETMQ_HOME的环境变量。需确保JAVA_HOME的环境变量已配置。 #### 2.2启动NameServer(mqnamesrv.cmd) 直接启动mqnamesrv.cmd将会不成功,需要修改配置文件。 查看mqnamesrv.cmd可知,实际上是运行runserver.cmd脚本,则需要修改该脚本部分配置。具体配置含义参见[JVM/OS配置 | RocketMQ (apache.org)](https://rocketmq.apache.org/zh/docs/bestPractice/04JVMOS) 考虑到个人用的电脑端性能问题,需先修改内存配置。 1. 编辑runserver.cmd,将`JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m`改为`JAVA_OPT=%JAVA_OPT% -server -Xms256m -Xmx512m` 2. 启动NameServer,可以直接双击mqnamesrv.cmd启动,也可以通过CMD进入到bin目录下通过`start mqnamesrv.cmd`来启动 #### 2.3启动Broker(mqbroker.cmd) 与mqnamesrv.cmd类似,需要修改配置文件,优化内存选择。由mqbroker.cmd也可知,实际上是启动runbroker.cmd,则可以修改该文件配置。 需将 `JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g -Xmn1g`改为`JAVA_OPT=%JAVA_OPT% -server -Xms256m -Xmx512m`。 启动方式可以直接启动,也可以通过CMD来启动。其中,还可以在启动前修改配置文件,来指定NameServer的地址。在SpringBoot中也有地址指定。这里就不作修改,直接启动。 #### 2.4运行结果截图 ![image-20230825110219483](C:\Users\86178\AppData\Roaming\Typora\typora-user-images\image-20230825110219483.png) 可以从截图中看到两个服务的运行地址。可以从配置文件中指定地址。 #### 2.5遇见的问题 如果JDK版本过高,出现服务无法启动的现象,具体是由配置文件中的`JAVA_OPT=%JAVA_OPT% -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC`中部分配置所导致的。部分配置已经在高版本的JDK移除或者修改,所以无法执行。在简单实践中建议使用JDK1.8或JDK11。 ### 3.SpringBoot集成RocketMQ 1. 从IDEA中新建SpringBoot Maven项目; 2. 在pom.xml导入 ``` org.apache.rocketmq rocketmq-spring-boot-starter 2.1.1 ``` 3. 配置文件 application.properties ``` # NameServer地址,可以由自己指定,也可以从运行结果中查看到 rocketmq.name-server=0.0.0.0:9876 # 默认的消息组 rocketmq.producer.group=springBootGroup ``` 4. 消息生产者类编写 5. 消息消费者类编写 6. 事务监听器类编写 7. Controller类编写 8. Result类编写 9. 简单实践中还集成了使用Swagger2构建RESTful APIs来查看接口,所以还需加上Swagger2的配置、相关类及注解。 10. 项目结构 ![image-20230825112011596](C:\Users\86178\AppData\Roaming\Typora\typora-user-images\image-20230825112011596.png) 红线部分是SpringBoot项目搭建时自动生成的包与类。 11. 项目启动与项目测试