I am trying several stomp libraries for java (gozirra, stompj, activemq). All these libraries have poor documentation, such as having only one example, and I have a serious problem:
I need SSL support.
The stomp+ssl protocol exists and is supported by activemq but I am not able to find a Java client that supports it.
I found this forum discussion about JMS on Android, which references the experimental Stomp API included in ActiveMQ 5.2 and greater (example copied below)
Also mentioned is that the REST API might be a better fit for mobile devices, allowing state to be maintained purely at the broker.
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();
With library from activemq do it this way :
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With