当前位置: 代码网 > it编程>编程语言>Java > spring-boot 3.X版本整合RocketMq的详细过程

spring-boot 3.X版本整合RocketMq的详细过程

2024年11月26日 Java 我要评论
版本信息先把该次整合的版本信息列如下:spring-bootspring-cloudrocketmq-spring-boot-starterrocketmq-clientrocketmq3.0.132

版本信息

先把该次整合的版本信息列如下:

spring-bootspring-cloudrocketmq-spring-boot-starterrocketmq-clientrocketmq
3.0.132022.0.52.2.34.9.84.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/> &lt;!&ndash; lookup parent from repository &ndash;&gt;-->
<!--	</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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com