Мне нужна клиентская библиотека Java Stomp, которая работает с SSL - PullRequest
9 голосов
/ 19 февраля 2012

Я пробую несколько библиотек stomp для Java (gozirra, stompj, activemq).Все эти библиотеки имеют плохую документацию, например, один пример, и у меня есть серьезная проблема:

Мне нужна поддержка SSL.

Протокол stomp + ssl существует и поддерживается activemq, ноЯ не могу найти клиент Java, который поддерживает его.

Ответы [ 3 ]

3 голосов
/ 20 февраля 2012

Я нашел это обсуждение на форуме о JMS на Android, которое ссылается на экспериментальный Stomp API , включенный в ActiveMQ 5.2 и выше (пример скопирован ниже)

Также упоминается, что 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();
2 голосов
/ 28 февраля 2014

С библиотекой из 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);
2 голосов
/ 26 февраля 2012

Не уверен, что он работает на Android, но стоит попробовать клиент FuseSource StompJMS , доступный на Github . Он использует библиотеку hwatdispatch, в которую встроены стандартные транспортные протоколы TCP и SSL. В любом случае, стоит попробовать.

...