版本信息
先把该次整合的版本信息列如下:
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官网springcloud alibaba版本声明
rocketmq我用的是最新的4.x版本4.9.8
本地启动rocketmq服务端
这块你们找文章看。我是从github上fork后下载到本地。使用idea启动namesrv和broker
构建测试工程
先创建父工程,用于pom的依赖继承
配置属性
<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>
创建子工程
使用spring-boot的初始化initializr创建工程并下载放到父工程子目录下
修改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>
增加生产者消费者启动配置
新增application.yml文件
rocketmq: producer: group: myproducergroup name-server: 127.0.0.1:9876
新增生产者
@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"); } }
新增消费者
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); } }
注意事项。使用spring-boot 3.x版本,rocketmq-spring-boot-starter的自动配置会有bug,提示rocketmqtemplate没有bean注入。解决方案参考未注入bean
启动后测试
启动就可以看到如下,正常的生产和消费。
到此这篇关于spring-boot 3.x版本整合rocketmq的详细过程的文章就介绍到这了,更多相关spring-boot 3.x整合rocketmq内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论