spring cloud整合rocketmq遇到的错误

定义spring cloud项目根目录的pom.xml时,
通常会进行版本规范如:

<properties>
    <spring-boot.version>3.2.7</spring-boot.version>
    <spring-cloud.version>2023.0.3</spring-cloud.version>
    <spring-cloud-alibaba.version>2023.0.1.2</spring-cloud-alibaba.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.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>${spring-cloud-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

在其他一个子项目中引入rocketmq

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.3.1</version>
</dependency>

启动项目报如下错误:

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    org.apache.rocketmq.spring.support.DefaultRocketMQListenerContainer.initRocketMQPushConsumer(DefaultRocketMQListenerContainer.java:645)

The following method did not exist:

    'void org.apache.rocketmq.client.consumer.DefaultMQPushConsumer.setNamespaceV2(java.lang.String)'

The calling method's class, org.apache.rocketmq.spring.support.DefaultRocketMQListenerContainer, was loaded from the following location:

    jar:file:/E:/maven/org/apache/rocketmq/rocketmq-spring-boot/2.3.1/rocketmq-spring-boot-2.3.1.jar!/org/apache/rocketmq/spring/support/DefaultRocketMQListenerContainer.class

The called method's class, org.apache.rocketmq.client.consumer.DefaultMQPushConsumer, is available from the following locations:

    jar:file:/E:/maven/org/apache/rocketmq/rocketmq-client/5.1.4/rocketmq-client-5.1.4.jar!/org/apache/rocketmq/client/consumer/DefaultMQPushConsumer.class

The called method's class hierarchy was loaded from the following locations:

    org.apache.rocketmq.client.consumer.DefaultMQPushConsumer: file:/E:/maven/org/apache/rocketmq/rocketmq-client/5.1.4/rocketmq-client-5.1.4.jar
    org.apache.rocketmq.client.ClientConfig: file:/E:/maven/org/apache/rocketmq/rocketmq-client/5.1.4/rocketmq-client-5.1.4.jar


Action:

Correct the classpath of your application so that it contains compatible versions of the classes org.apache.rocketmq.spring.support.DefaultRocketMQListenerContainer and org.apache.rocketmq.client.consumer.DefaultMQPushConsumer

错的莫名其妙

主要错误原因是——rocketmq-client版本不符导致

导致错误的原因是spring-cloud-alibaba-dependencies约定了rocketmq-client的版本规范,错误的更改了原本rocketmq-spring-boot-starter约定的版本,导致版本不一致,无法启动。

只需要手动修改版本即可👇

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.3.1</version>
</dependency>

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>5.2.0</version>
</dependency>

项目正常启动

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐