Мне нужна клиентская библиотека Java Stomp, которая работает с SSL
Вопрос
Я пробую несколько библиотек для Java (gozirra, stompj, activemq).У всех этих библиотек плохая документация, например, только один пример, и у меня возникла серьезная проблема:
Мне нужна поддержка SSL.
Протокол stomp+ssl существует и поддерживается activemq, но я не могу найти клиент Java, который его поддерживает.
Решение
С библиотекой 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);
Другие советы
я нашел это обсуждение на форуме о JMS на Android, где упоминаются экспериментальный API Stomp включен в ActiveMQ 5.2 и более поздних версий (пример скопирован ниже)
Также упоминается, что ОТДЫХ 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();
Не уверен, что это работает на Android, но попробовать стоит. FuseSource StompJMS клиент доступен на Гитхаб.Он использует библиотеку hwatdispatch, в которую встроены стандартные транспорты TCP и SSL.В любом случае стоит попробовать.