使用java中的amqp连接Windows服务总线时关闭套接字

时间:2017-10-13 03:58:22

标签: java amqp servicebus window-server

我正在尝试使用微软网站上提供的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;

我有与网站上完全相同的代码,但是给出了以下错误

  

初始设置创建上下文创建连接工厂创建   连接

     

创建会话   创建会话/制作人的例外

     

java.net.SocketException:Socket已关闭   java.net.SocketInputStream.socketRead0(Native Method)at   java.net.SocketInputStream.socketRead(SocketInputStream.java:116)   javax.jms.JMSException:class java.net.SocketException:Connection   由远程hostclass java.net.SocketException关闭:连接已关闭   由远程主机在   java.net.SocketInputStream.read(SocketInputStream.java:170)at   java.net.SocketInputStream.read(SocketInputStream.java:141)at   

的sun.security.ssl.InputRecord.readFully(InputRecord.java:465)      

处理完成,退出代码为0

我试图做SSLPoke并且它取得了成功,

所以问题只出现在AMQP方面..你能否指出我在连接windows server service bus using amqp from java时使用的库的正确版本

2 个答案:

答案 0 :(得分:1)

您在项目中使用了两个不同的AMQP JMS客户端库依赖项,因此我不知道它到底发生了什么,但我的第一个猜测是您最终使用了遗产&#39; qpid -amqp-1-0-客户JMS&#39;客户端不受支持,绝对不会工作。我删除了它并尝试使用Qpid JMS 0.26.0客户端库来完成任务,尽管我相信您可能需要一些其他URI选项,因为azure有一些特定的要求才能连接。

答案 1 :(得分:0)

我能够使用以下版本的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>