使用来自 java 的 amqp 连接 windows 服务总线时套接字关闭
socket closed when connecting windows service bus using amqp from java
我正在尝试使用 Microsoft 网站上提供的 java example 连接到 windows 服务器的服务总线。
下面是我用于此 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 端。你能告诉我连接到 windows server service bus using amqp from java
时要使用的正确库版本吗
您在您的项目中使用了两个不同的 AMQP JMS 客户端库依赖项,所以我不知道到底发生了什么,但我的第一个猜测是您最终使用的是遗留的 'qpid-amqp-1-0-client-jms' 客户端,而不是支持,绝对行不通。我会删除它并尝试仅使用 Qpid JMS 0.26.0 客户端库来实现,尽管我相信您可能需要一些其他 URI 选项,因为 azure 有一些特定的连接要求。
我能够使用以下版本的 jar 解决问题
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jms_1.1_spec</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.qpid</groupId>
<artifactId>qpid-amqp-1-0-client-jms</artifactId>
<version>0.22</version>
</dependency>
我正在尝试使用 Microsoft 网站上提供的 java example 连接到 windows 服务器的服务总线。
下面是我用于此 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 端。你能告诉我连接到 windows server service bus using amqp from java
您在您的项目中使用了两个不同的 AMQP JMS 客户端库依赖项,所以我不知道到底发生了什么,但我的第一个猜测是您最终使用的是遗留的 'qpid-amqp-1-0-client-jms' 客户端,而不是支持,绝对行不通。我会删除它并尝试仅使用 Qpid JMS 0.26.0 客户端库来实现,尽管我相信您可能需要一些其他 URI 选项,因为 azure 有一些特定的连接要求。
我能够使用以下版本的 jar 解决问题
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jms_1.1_spec</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.qpid</groupId>
<artifactId>qpid-amqp-1-0-client-jms</artifactId>
<version>0.22</version>
</dependency>