千家信息网

amqp协议链接异常怎么排查

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要介绍"amqp协议链接异常怎么排查",在日常操作中,相信很多人在amqp协议链接异常怎么排查问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"amqp协议链接异
千家信息网最后更新 2025年02月02日amqp协议链接异常怎么排查

这篇文章主要介绍"amqp协议链接异常怎么排查",在日常操作中,相信很多人在amqp协议链接异常怎么排查问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"amqp协议链接异常怎么排查"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    前言

    amqp是一种通用的消息队列数据传输协议,典型的MQ应用RabbitMQ就实现了amqp协议,所以,我们在使用amqp-client链接rabbitmq时,可以使用amqp的链接协议连接rabbitmq。但是博主在尝试使用amqp协议链接时,碰到了一个隐藏的连接协议规范问题,故记录在此。

    问题背景

    • amqp-client版本:5.4.x

    • amqp-url

    异常信息

    异常一:

    11:49:12.329 [AMQP Connection 192.168.1.226:5672] ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error occuredjava.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)

    原因分析

    异常一分析:

    首先抛出上面异常,是因为rabbitmq服务器拒绝了你的操作,中断了你的连接,所以一般应用在刚启动建立连接时并不会报错,而是在发送数据时报链接的错误。拒绝操作的原因是当前链接的账号没有vhost的操作权限。那么基于这个原因,很可能是如下的问题:

    1、当前账号没有权限

    2、当前账号没有操作具体的vhost的权限

    网上很多人的问题都是第一个,忘记给账号赋值权限了,博主的问题是因为amqp的连接串有问题,导致链接了错误的vhost,所以表象就是没有权限。rabbitmq默认的vhost是"/",amqp://keking:kk123456@192.168.1.226:5672/连接串代表的vhost并不是"/",而是""。

    异常二分析:

    针对异常二的问题,在amqp链接协议中,vhost部分的斜杆目录需要使用%2f代替,不然客户端在解析URI的时候,分割链接时就会抛出协议不正确的异常

    解决问题

    amqp链接协议详情如下:

    所以,要链接到"/"的vhost,正确的链接应该要在尾部加上"%2f",如

    "amqp://keking:kk123456@192.168.1.226:5672/%2f"

    到此,关于"amqp协议链接异常怎么排查"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

    链接 问题 权限 账号 学习 原因 分析 数据 更多 错误 帮助 应用 实用 接下来 代表 信息 典型 前言 原因分析 客户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全s盒的工作原理 大数据分析用于网络安全 oa软件开发公司简介 最快的在线代理服务器 服务器不支持u盘启动 金山区正规网络技术供应 sql数据库停止 成都软件开发培训哪个学校好 怀柔区多功能网络技术售后保障 松江区专业性软件开发销售方法 政府网络安全值班制度 英雄联盟的各个服务器的对比 河南云锐网络技术有限公司电话 贵州哪里有网络技术职业学校 ftp与文件服务器 华东交通大学的校园网服务器地址 手机应用软件开发情况是啥意思 怎么装车牌识别数据库 新炬网络技术有限公司杭州 软件开发学机械 锐思数据库的波动率 菏泽软件开发科技有限公司 投资软件开发合同 爬数据库 宜良品牌软件开发价格走势 网络安全宣传日主题党日活动 出租服务器托管在哪里找 如何设置默认数据库文件夹里 中宁县软件开发公司找哪家 数据库索引包含哪些
    0