最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Boot?2.7?集成?RabbitMQ?3.9?版本依賴沖突問題解決

 更新時(shí)間:2026年05月20日 09:18:01   作者:drstx  
文章主要討論了在使用SpringBoot2.7與RabbitMQ時(shí)可能出現(xiàn)的依賴沖突問題,建議優(yōu)先使用SpringBoot自帶的依賴管理,避免手動(dòng)指定不匹配的版本,并通過查看依賴樹、清理手動(dòng)配置、強(qiáng)制對(duì)齊版本等步驟解決沖突,感興趣的朋友一起看看吧

最穩(wěn)妥的處理方式是優(yōu)先使用 Spring Boot 2.7 自帶的依賴管理版本,不要手動(dòng)強(qiáng)制指定 RabbitMQ 客戶端版本,除非有明確的安全漏洞修復(fù)需求。

先說結(jié)論:大多數(shù)沖突是因?yàn)槭謩?dòng)引入了與 Spring AMQP 不匹配的 amqp-client 版本,回歸 Spring Boot 托管依賴通常能解決。

  • 先確認(rèn):使用 Maven 或 Gradle 命令查看實(shí)際引入的依賴樹。
  • 先處理:移除手動(dòng)指定的客戶端版本,讓 Spring Boot 統(tǒng)一管理。
  • 再驗(yàn)證:?jiǎn)?dòng)應(yīng)用并檢查日志中是否有連接異常或類找不到錯(cuò)誤。

命令速用版

如果你使用 Maven,可以在項(xiàng)目根目錄執(zhí)行以下命令查看依賴樹,定位沖突來源:

mvn dependency:tree -Dincludes=com.rabbitmq:*

如果是 Gradle 項(xiàng)目,使用:

gradle dependencies `--configuration` runtimeClasspath

發(fā)現(xiàn)版本不一致時(shí),在 pom.xml 中移除手動(dòng)聲明的 amqp-client 版本,或?qū)⑵浞湃?dependencyManagement 中由 Spring Boot 控制。

典型報(bào)錯(cuò)日志

依賴沖突發(fā)生時(shí),啟動(dòng)階段或運(yùn)行階段常出現(xiàn)以下錯(cuò)誤,可作為排查依據(jù):

Caused by: java.lang.NoSuchMethodError: com.rabbitmq.client.Channel.basicPublish(Ljava/lang/String;Ljava/lang/String;ZLcom/rabbitmq/client/AMQP$BasicProperties;[B)V
    at org.springframework.amqp.rabbit.core.RabbitTemplate.doSend(RabbitTemplate.java:...)
    ...
    Caused by: java.lang.ClassNotFoundException: com.rabbitmq.client.impl.nio.SslEngineFactory

若日志中出現(xiàn)上述 NoSuchMethodErrorClassNotFoundException,且指向 com.rabbitmq.client 包,極大概率是客戶端版本不匹配。

為什么會(huì)這樣

Spring Boot 的核心特性之一是通過 spring-boot-dependencies 來管理常用庫的版本。Spring Boot 2.7.x 系列默認(rèn)關(guān)聯(lián)了特定版本的 Spring AMQP 和 RabbitMQ Java Client。當(dāng)你手動(dòng)在 dependencies 中指定了另一個(gè)版本的 amqp-client 時(shí),Maven 或 Gradle 的依賴調(diào)解機(jī)制可能會(huì)選中你指定的版本,而這個(gè)版本可能與 Spring AMQP 期望的方法簽名不一致,導(dǎo)致運(yùn)行時(shí)出現(xiàn) NoSuchMethodErrorClassNotFoundException。

RabbitMQ 3.9 是 Broker 端的版本,它支持 AMQP 0.9.1 協(xié)議,理論上兼容較廣的客戶端版本。但客戶端庫(Java Client)的 API 在不同大版本間可能存在變更,Spring AMQP 是基于特定范圍的客戶端版本構(gòu)建的,混用容易出問題。

分步處理

1. 檢查當(dāng)前依賴:運(yùn)行上述命令速用版中的命令,搜索 amqp-client。確認(rèn)是否有多個(gè)版本共存,或者版本明顯偏離 Spring Boot 2.7 的默認(rèn)范圍(通常是 5.x 系列)。

2. 清理手動(dòng)配置:打開 pom.xmlbuild.gradle。查找是否有類似以下的顯式聲明:

<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>6.x.x</version>
</dependency>

如果有,嘗試刪除 <version> 標(biāo)簽,或者直接移除該依賴塊,讓 spring-boot-starter-amqp 傳遞依賴。

3. 強(qiáng)制對(duì)齊版本(可選):如果確實(shí)需要特定版本(例如修復(fù) CVE),請(qǐng)?jiān)?dependencyManagement 中聲明,而不是直接在 dependencies 中:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>5.16.0</version>
        </dependency>
    </dependencies>
</dependencyManagement>

注意:修改后需確認(rèn) Spring AMQP 版本是否支持該客戶端版本,不同小版本間可能存在 API 變更,請(qǐng)嚴(yán)格參考 Spring AMQP 官方發(fā)布說明中的兼容性矩陣。

怎么驗(yàn)證是否生效

1. 啟動(dòng)日志:重啟應(yīng)用,觀察控制臺(tái)日志。搜索 AMQPRabbit 關(guān)鍵字。如果沒有出現(xiàn) Caused by: java.lang.NoSuchMethodErrorjava.lang.ClassNotFoundException,說明類加載正常。

2. 連接狀態(tài):登錄 RabbitMQ 管理頁面(默認(rèn)端口 15672),查看 Connections 標(biāo)簽頁。確認(rèn)應(yīng)用是否建立了連接,且狀態(tài)為 Running。

3. 健康檢查:如果項(xiàng)目集成了 Spring Boot Actuator,訪問 /actuator/health 接口,確認(rèn) rabbit 組件狀態(tài)為 UP。

常見坑

1. 客戶端與 Broker 版本混淆:RabbitMQ 3.9 是服務(wù)端版本,不要試圖讓 Java 客戶端版本號(hào)與服務(wù)端完全一致,它們遵循不同的發(fā)布周期。

2. Jackson 沖突:有時(shí)候依賴沖突不表現(xiàn)在 RabbitMQ 包上,而是消息轉(zhuǎn)換所需的 Jackson 庫版本不一致,導(dǎo)致序列化失敗。如果連接正常但收發(fā)消息報(bào)錯(cuò),請(qǐng)檢查 Jackson 版本。

3. Spring Boot 2.7 生命周期:Spring Boot 2.7 系列已停止開源支持,長(zhǎng)期存在安全風(fēng)險(xiǎn)。建議盡快規(guī)劃升級(jí)到 Spring Boot 3.x,以獲得更新的依賴管理和安全補(bǔ)丁。

參考來源

  • Spring Boot Documentation, "Release Notes", https://github.com/spring-projects/spring-boot/wiki/Release-Notes
  • RabbitMQ Documentation, "Java Client", https://www.rabbitmq.com/java-client.html
  • Spring AMQP Reference, "Compatibility Matrix", https://docs.spring.io/spring-amqp/reference/appendix/compatibility.html

到此這篇關(guān)于Spring Boot 2.7 集成 RabbitMQ 3.9 版本依賴沖突問題解決的文章就介紹到這了,更多相關(guān)Spring Boot集成RabbitMQ內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 分析JVM的執(zhí)行子系統(tǒng)

    分析JVM的執(zhí)行子系統(tǒng)

    本文主要介紹了JVM執(zhí)行子系統(tǒng)。了解虛擬機(jī)是如何執(zhí)行程序的, 虛擬機(jī)怎樣運(yùn)行一個(gè)Class文件的概念模型, 可以更好的理解怎樣寫出優(yōu)秀的代碼
    2021-06-06
  • Java之Algorithm_analysis案例詳解

    Java之Algorithm_analysis案例詳解

    這篇文章主要介紹了Java之Algorithm_analysis案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Hadoop源碼分析三啟動(dòng)及腳本剖析

    Hadoop源碼分析三啟動(dòng)及腳本剖析

    本篇是Hadoop源碼分析系列文章第三篇,主要介紹Hadoop啟動(dòng)以及腳本的剖析,后續(xù)本系列文章會(huì)持續(xù)更新,有需要的朋友可以借鑒參考下
    2021-09-09
  • 詳解hibernate4基本實(shí)現(xiàn)原理

    詳解hibernate4基本實(shí)現(xiàn)原理

    本文通過圖文并茂的形式給大家介紹的hibernate4基本實(shí)現(xiàn)原理,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-09-09
  • Spring-Data-JPA整合MySQL和配置的方法

    Spring-Data-JPA整合MySQL和配置的方法

    這篇文章主要介紹了Spring Data JPA整合MySQL和配置,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Spring Cloud Alibaba整合Sentinel的實(shí)現(xiàn)步驟

    Spring Cloud Alibaba整合Sentinel的實(shí)現(xiàn)步驟

    這篇文章主要介紹了Spring Cloud Alibaba整合Sentinel的實(shí)現(xiàn)步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • spring使用RedisTemplate的操作類訪問Redis

    spring使用RedisTemplate的操作類訪問Redis

    本篇文章主要介紹了spring使用RedisTemplate的操作類訪問Redis,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • java中javamail收發(fā)郵件實(shí)現(xiàn)方法

    java中javamail收發(fā)郵件實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了java中javamail收發(fā)郵件實(shí)現(xiàn)方法,實(shí)例分析了javamail的使用方法與相關(guān)注意事項(xiàng),非常具有實(shí)用價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 詳解JAVA如何實(shí)現(xiàn)樂觀鎖以及CAS機(jī)制

    詳解JAVA如何實(shí)現(xiàn)樂觀鎖以及CAS機(jī)制

    悲觀鎖和樂觀鎖其實(shí)本質(zhì)都是一種思想,在JAVA中對(duì)于悲觀鎖的實(shí)現(xiàn)大家可能都很了解,可以通過synchronized、ReentrantLock加鎖實(shí)現(xiàn),本文不展開講解了。那么樂觀鎖在JAVA中是如何實(shí)現(xiàn)的呢?底層的實(shí)現(xiàn)機(jī)制又是什么呢?本文就來和大家詳細(xì)講講
    2022-12-12
  • 使用Java visualVM監(jiān)控遠(yuǎn)程JVM的流程分析

    使用Java visualVM監(jiān)控遠(yuǎn)程JVM的流程分析

    我們經(jīng)常需要對(duì)我們的開發(fā)的軟件做各種測(cè)試, 軟件對(duì)系統(tǒng)資源的使用情況更是不可少,JDK1.6開始自帶的VisualVM就是不錯(cuò)的監(jiān)控工具,本文給大家分享使用Java visualVM監(jiān)控遠(yuǎn)程JVM的問題,感興趣的朋友跟隨小編一起看看吧
    2021-05-05

最新評(píng)論

宁乡县| 道孚县| 卫辉市| 邵东县| 漳平市| 榆林市| 新蔡县| 同德县| 南昌市| 滦平县| 梅河口市| 迁安市| 开封市| 大足县| 房产| 汕头市| 麻江县| 汶川县| 始兴县| 延津县| 蒙阴县| 克山县| 宜君县| 安西县| 江孜县| 郧西县| 时尚| 北海市| 南靖县| 华阴市| 龙门县| 英吉沙县| 班戈县| 华蓥市| 城市| 天长市| 东兰县| 青海省| 茂名市| 镇康县| 集安市|