spring-boot 3.X版本整合RocketMq的詳細(xì)過程
版本信息
先把該次整合的版本信息列如下:
| spring-boot | spring-cloud | rocketmq-spring-boot-starter | rocketmq-client | rocketmq |
|---|---|---|---|---|
| 3.0.13 | 2022.0.5 | 2.2.3 | 4.9.8 | 4.9.8 |
版本信息是如何選擇的呢?看rocketMq官網(wǎng)springcloud alibaba版本聲明

rocketMq我用的是最新的4.X版本4.9.8
本地啟動(dòng)rocketMq服務(wù)端
這塊你們找文章看。我是從github上fork后下載到本地。使用idea啟動(dòng)nameSrv和broker
構(gòu)建測試工程
先創(chuàng)建父工程,用于pom的依賴?yán)^承

配置屬性
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<revision>0.0.1</revision>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.test.skip>false</maven.test.skip>
<maven.javadoc.skip>true</maven.javadoc.skip>
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<spring-boot-dependencies.version>3.0.13</spring-boot-dependencies.version>
<spring.cloud-version>2022.0.5</spring.cloud-version>
<com.alibaba.cloud.version>2022.0.0.0</com.alibaba.cloud.version>
<knife4j.version>2.0.5</knife4j.version>注意使用spring-boot 3.x版本后,jdk必須要17以上。所以本地需要安裝jdk17
增加父工程依賴
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${com.alibaba.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>創(chuàng)建子工程
使用spring-boot的初始化initializr創(chuàng)建工程并下載放到父工程子目錄下
修改pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.hjq</groupId>
<artifactId>sunshine-all</artifactId>
<version>${revision}</version>
<relativePath>../pom.xml</relativePath>
</parent>
<!-- <parent>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-parent</artifactId>-->
<!-- <version>3.2.11</version>-->
<!-- <relativePath/> <!– lookup parent from repository –>-->
<!-- </parent>-->
<groupId>com.hjq.sunshine</groupId>
<artifactId>demo</artifactId>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
</exclusion>
</exclusions>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.9.8</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>增加生產(chǎn)者消費(fèi)者啟動(dòng)配置

新增application.yml文件
rocketmq:
producer:
group: myProducerGroup
name-server: 127.0.0.1:9876新增生產(chǎn)者

@Component
@Log
public class FirstProduce implements CommandLineRunner {
@Autowired
private RocketMQTemplate rocketMQTemplate;
@Override
public void run(String... args) throws Exception {
log.info("1111");
SendResult result = rocketMQTemplate.syncSend("TestTopic", "1111");
log.info(JSONObject.toJSONString(result));
log.info("2222");
}
}新增消費(fèi)者
package com.hjq.sunshine.demo.rocketmq;
import lombok.extern.java.Log;
import org.apache.rocketmq.spring.annotation.ConsumeMode;
import org.apache.rocketmq.spring.annotation.MessageModel;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Service;
import java.util.function.Consumer;
/**
* @Description
* @Author hjq
* @Date 2024/11/21
*/
@Service
@Log
@RocketMQMessageListener(consumerGroup = "MyConsumer", topic = "TestTopic",
consumeMode = ConsumeMode.CONCURRENTLY, messageModel = MessageModel.BROADCASTING)
public class FirstConsumer implements RocketMQListener<String> {
@Override
public void onMessage(String message) {
log.info("rece msg: " + message);
}
}注意事項(xiàng)。使用spring-boot 3.x版本,rocketmq-spring-boot-starter的自動(dòng)配置會(huì)有bug,提示rocketMQTemplate沒有bean注入。解決方案參考未注入bean
啟動(dòng)后測試
啟動(dòng)就可以看到如下,正常的生產(chǎn)和消費(fèi)。

到此這篇關(guān)于spring-boot 3.X版本整合RocketMq的詳細(xì)過程的文章就介紹到這了,更多相關(guān)spring-boot 3.X整合RocketMq內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot如何使用Map將錯(cuò)誤提示輸出到頁面
這篇文章主要介紹了Springboot如何使用Map將錯(cuò)誤提示輸出到頁面,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
SpringBoot實(shí)現(xiàn)發(fā)送郵件功能
這篇文章主要介紹了SpringBoot 發(fā)送郵件功能實(shí)現(xiàn),本文以163郵箱為例通過這個(gè)小案例給大家介紹,需要的朋友可以參考下2019-12-12
關(guān)于ScheduledThreadPoolExecutor不執(zhí)行的原因分析
這篇文章主要介紹了關(guān)于ScheduledThreadPoolExecutor不執(zhí)行的原因分析,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
mybatis-plus分頁如何接收前端參數(shù)limit和page
這篇文章主要介紹了mybatis-plus分頁如何接收前端參數(shù)limit和page,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
mybatis動(dòng)態(tài)新增(insert)和修改(update)方式
這篇文章主要介紹了mybatis動(dòng)態(tài)新增(insert)和修改(update)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05

