我需要一个与ssl一起使用的java stomp客户端库

时间:2012-02-19 13:10:22

标签: java ssl activemq stomp

我正在为java(gozirra,stompj,activemq)尝试几个stomp库。 所有这些库都有糟糕的文档,例如只有一个例子,我有一个严重的问题:

我需要SSL支持。

stomp + ssl协议存在并受activemq支持,但我无法找到支持它的Java客户端。

3 个答案:

答案 0 :(得分:3)

我在Android上找到了关于JMS的this forum discussion,其中引用了ActiveMQ 5.2及更高版本中包含的the experimental Stomp API(示例复制如下)

还提到REST API可能更适合移动设备,允许状态完全由代理维护。

StompConnection connection = new StompConnection();
connection.open("localhost", 61613);

connection.connect("system", "manager");
StompFrame connect = connection.receive();
if (!connect.getAction().equals(Stomp.Responses.CONNECTED)) {
    throw new Exception ("Not connected");
}

connection.begin("tx1");
connection.send("/queue/test", "message1", "tx1", null);
connection.send("/queue/test", "message2", "tx1", null);
connection.commit("tx1");

connection.subscribe("/queue/test", Subscribe.AckModeValues.CLIENT);

connection.begin("tx2");

StompFrame message = connection.receive();
System.out.println(message.getBody());
connection.ack(message, "tx2");

message = connection.receive();
System.out.println(message.getBody());
connection.ack(message, "tx2");

connection.commit("tx2");
connection.disconnect();

答案 1 :(得分:2)

不确定它是否适用于Android,但值得一试的是FuseSource StompJMS上的Github客户端。它使用内置标准TCP和SSL传输的hwatdispatch库。无论如何都值得一试。

答案 2 :(得分:2)

使用activemq中的库可以这样做:

                System.setProperty("javax.net.ssl.keyStore",
            "/home/foo/.keystore/client.ks");
    System.setProperty("javax.net.ssl.keyStorePassword", "changeme");
    System.setProperty("javax.net.ssl.trustStore",
            "/home/foo/.keystore/client.ts");

    StompConnection connection = new StompConnection();
    SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory
            .getDefault();
    SSLSocket sslsocket = (SSLSocket) factory.createSocket("127.0.0.1",
            61612);
    connection.open(sslsocket);