我正在尝试使用 Java example 连接到 Windows 服务器的服务总线Microsoft 网站上提供了该信息。
以下是我用于此 POC 的库
<dependency>
<groupId>org.apache.qpid</groupId>
<artifactId>qpid-jms-client</artifactId>
<version>0.26.0</version>
</dependency>
<dependency>
<groupId>org.apache.qpid</groupId>
<artifactId>qpid-amqp-1-0-client-jms</artifactId>
<version>0.32</version>
</dependency>
下面是我正在使用的连接字符串格式
return "amqps://" + SbSharedKey + ":" + SbSharedSecret + "@" + SbDomain + "/" + SbNamespace;
我的代码与网站上的代码完全相同,但给出了以下错误
Initial setup Creating context Creating connection factory Creating connection
Creating session Exception creating session/producer
java.net.SocketException: Socket Closed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) javax.jms.JMSException: class java.net.SocketException: Connection closed by remote hostclass java.net.SocketException: Connection closed by remote host at java.net.SocketInputStream.read(SocketInputStream.java:170) at java.net.SocketInputStream.read(SocketInputStream.java:141) at sun.security.ssl.InputRecord.readFully(InputRecord.java:465) at
Process finished with exit code 0
我尝试做 SSLPoke它正在取得成功,
所以问题似乎只存在于 AMQP 方面。
您能否指出在使用 Java 中的 amqp 连接到 Windows 服务器服务总线时要使用的正确版本的库?
最佳答案
您在项目中使用了两个不同的 AMQP JMS 客户端库依赖项,因此我不知道到底发生了什么,但我的第一个猜测是您最终会使用旧的“qpid-amqp-1-0-client-” jms 的客户端不受支持,并且肯定无法工作。我会删除它并尝试仅使用 Qpid JMS 0.26.0 客户端库来完成任务,尽管我相信您可能还需要一些其他 URI 选项,因为 azure 有一些特定的连接要求。
关于java - 使用 Java 中的 amqp 连接 Windows 服务总线时套接字关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46722322/