欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

異常排查記錄amqp協(xié)議鏈接陷阱

 更新時間:2022年02月24日 14:35:34   作者:kl  
這篇文章主要介紹了一次關(guān)于amqp協(xié)議鏈接陷阱-An?unexpected?connection?driver?error?occured的異常排查記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助

前言

amqp是一種通用的消息隊列數(shù)據(jù)傳輸協(xié)議,典型的MQ應(yīng)用RabbitMQ就實(shí)現(xiàn)了amqp協(xié)議,所以,我們在使用amqp-client鏈接rabbitmq時,可以使用amqp的鏈接協(xié)議連接rabbitmq。但是博主在嘗試使用amqp協(xié)議鏈接時,碰到了一個隱藏的連接協(xié)議規(guī)范問題,故記錄在此。

amqp協(xié)議文檔:https://www.rabbitmq.com/uri-spec.html

問題背景

  • amqp-client版本:5.4.x
  • amqp-url:amqp://keking:kk123456@192.168.1.226:5672/

異常信息

異常一:

11:49:12.329 [AMQP Connection 192.168.1.226:5672] ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error occured
java.net.SocketException: socket closed
	at java.net.SocketInputStream.socketRead0(Native Method) ~[?:1.8.0_77]
	at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[?:1.8.0_77]
	at java.net.SocketInputStream.read(SocketInputStream.java:170) ~[?:1.8.0_77]
	at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[?:1.8.0_77]
	at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) ~[?:1.8.0_77]
	at java.io.BufferedInputStream.read(BufferedInputStream.java:265) ~[?:1.8.0_77]
	at java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288) ~[?:1.8.0_77]
	at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:91) ~[amqp-client-5.4.3.jar:5.4.3]
	at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:164) ~[amqp-client-5.4.3.jar:5.4.3]
	at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:596) [amqp-client-5.4.3.jar:5.4.3]
	at java.lang.Thread.run(Thread.java:745) [?:1.8.0_77]
Disconnected from the target VM, address: '127.0.0.1:0', transport: 'socket'

異常二:

java.lang.IllegalArgumentException: Multiple segments in path of AMQP URI: /%2Fapp/kl
	at com.rabbitmq.client.ConnectionFactory.setUri(ConnectionFactory.java:348)
	at com.rabbitmq.client.ConnectionFactory.setUri(ConnectionFactory.java:370)
	at com.jd.blockchain.consensus.mq.factory.RabbitFactory.initConnectionFactory(RabbitFactory.java:42)
	at com.jd.blockchain.consensus.mq.factory.RabbitFactory.main(RabbitFactory.java:52)

原因分析

異常一分析:

首先拋出上面異常,是因?yàn)閞abbitmq服務(wù)器拒絕了你的操作,中斷了你的連接,所以一般應(yīng)用在剛啟動建立連接時并不會報錯,而是在發(fā)送數(shù)據(jù)時報鏈接的錯誤。拒絕操作的原因是當(dāng)前鏈接的賬號沒有vhost的操作權(quán)限。那么基于這個原因,很可能是如下的問題:

1、當(dāng)前賬號沒有權(quán)限

2、當(dāng)前賬號沒有操作具體的vhost的權(quán)限

網(wǎng)上很多人的問題都是第一個,忘記給賬號賦值權(quán)限了,博主的問題是因?yàn)閍mqp的連接串有問題,導(dǎo)致鏈接了錯誤的vhost,所以表象就是沒有權(quán)限。rabbitmq默認(rèn)的vhost是“/”,amqp://keking:kk123456@192.168.1.226:5672/連接串代表的vhost并不是“/”,而是“”。

異常二分析:

針對異常二的問題,在amqp鏈接協(xié)議中,vhost部分的斜桿目錄需要使用%2f代替,不然客戶端在解析URI的時候,分割鏈接時就會拋出協(xié)議不正確的異常

解決問題

amqp鏈接協(xié)議詳情如下:

所以,要鏈接到“/”的vhost,正確的鏈接應(yīng)該要在尾部加上“%2f”,如

“amqp://keking:kk123456@192.168.1.226:5672/%2f”

以上就是異常排查記錄amqp協(xié)議鏈接陷阱的詳細(xì)內(nèi)容,更多關(guān)于amqp協(xié)議鏈接異常的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SWT(JFace)體驗(yàn)之打開多個Form

    SWT(JFace)體驗(yàn)之打開多個Form

    SWT(JFace)體驗(yàn)之打開多個Form的實(shí)現(xiàn)代碼。
    2009-06-06
  • Java一元稀疏多項(xiàng)式計算器

    Java一元稀疏多項(xiàng)式計算器

    大家好,本篇文章主要講的是Java一元稀疏多項(xiàng)式計算器,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 值得收藏!教你如何在IDEA中快速查看Java字節(jié)碼

    值得收藏!教你如何在IDEA中快速查看Java字節(jié)碼

    開發(fā)中如果我們想看JVM虛擬機(jī)怎么編譯我們的Java文件,生成字節(jié)碼的,用IDEA工具就可以查看,本篇文章就給大家詳細(xì)介紹,對正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • kafka內(nèi)外網(wǎng)訪問配置方式

    kafka內(nèi)外網(wǎng)訪問配置方式

    這篇文章主要介紹了kafka內(nèi)外網(wǎng)訪問配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • springBoot整合rabbitMQ的方法詳解

    springBoot整合rabbitMQ的方法詳解

    這篇文章主要介紹了springBoot整合rabbitMQ的方法詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 解決Nacos在執(zhí)行startup.cmd的時候出現(xiàn)閃退的問題

    解決Nacos在執(zhí)行startup.cmd的時候出現(xiàn)閃退的問題

    因?yàn)樵诠ぷ髦械捻?xiàng)目中需要使用到nacos作為注冊中心,但是在使用nacos的過程中運(yùn)行startup.cmd的時候出現(xiàn)了閃退的情況,運(yùn)行startup.cmd閃一下就沒有了,我把解決這個問題的全過程理了一下,希望能幫到您,需要的朋友可以參考下
    2023-12-12
  • java abstract class interface之間的區(qū)別介紹

    java abstract class interface之間的區(qū)別介紹

    含有abstract修飾符的class即為抽象類,abstract 類不能創(chuàng)建的實(shí)例對象,abstract class類中定義抽象方法必須在具體(Concrete)子類中實(shí)現(xiàn),所以,不能有抽象構(gòu)造方法或抽象靜態(tài)方法
    2012-11-11
  • Java常用時間工具類總結(jié)(珍藏版)

    Java常用時間工具類總結(jié)(珍藏版)

    這篇文章主要為大家詳細(xì)介紹了Java中一些常用時間工具類的使用示例代碼,文中的代碼簡潔易懂,對我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下
    2022-07-07
  • java接口使用默認(rèn)方法的講解

    java接口使用默認(rèn)方法的講解

    在本篇文章里小編給大家整理了一篇關(guān)于java接口使用默認(rèn)方法的講解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2021-04-04
  • 如何使用Java 8 中的 Stream 遍歷樹形結(jié)構(gòu)

    如何使用Java 8 中的 Stream 遍歷樹形結(jié)構(gòu)

    這篇文章主要介紹了使用Java 8中的Stream遍歷樹形結(jié)構(gòu),我們可以使用Java8中的Stream流一次性把數(shù)據(jù)查出來,然后通過流式處理,我們一起來看看,代碼實(shí)現(xiàn)為了實(shí)現(xiàn)簡單,就模擬查看數(shù)據(jù)庫所有數(shù)據(jù)到List里面,需要的朋友可以參考下
    2023-08-08

最新評論