我正在嘗試java的幾個stomp庫(gozirra,stompj,activemq)。 所有這些庫都具有較差的文檔,例如只有一個示例,並且存在嚴重問題:我需要一個java stomp客戶端庫,與ssl一起工作
我需要SSL支持。
stomp + ssl協議存在並受activemq支持,但我無法找到支持它的Java客戶端。
我正在嘗試java的幾個stomp庫(gozirra,stompj,activemq)。 所有這些庫都具有較差的文檔,例如只有一個示例,並且存在嚴重問題:我需要一個java stomp客戶端庫,與ssl一起工作
我需要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);
我發現this forum discussion約JMS Android上,它引用包括在ActiveMQ的5.2和更高的(例如低於複製)
還提到的是,REST API可能是更適合的移動設備,允許保持狀態the experimental Stomp 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();
謝謝,但我發現(並嘗試過)至少三個Java踐踏客戶端,他們的工作。不幸的是沒有SSL,我非常需要它。感謝REST的想法,但我會嘗試一些腳步失敗的嘗試。 – mgiammarco 2012-02-20 19:33:41
你確定你的SSL證書正在工作嗎?你有沒有成功使用任何STOMP + SSL客戶端(非Java)? – 2012-02-24 00:32:11
我可以說我已成功配置activemq服務器以使用stomp + ssl協議。用telnet嘗試啓動一個ssl協商。我還沒有嘗試過任何客戶端(java或非java)。 – mgiammarco 2012-02-24 13:33:57
不知道它適用於Android,但值得一試的是Github可用FuseSource StompJMS客戶端。它使用內置標準TCP和SSL傳輸的hwatdispatch庫。無論如何,值得一試。
我按照您的建議嘗試了它,我已經看到它支持ssl,但由於沒有示例和文檔,因此我無法配置密鑰存儲庫,因此ssl連接失敗。任何想法? – mgiammarco 2012-03-11 01:15:06
好的,我確認FuseSource Stomp的實現可以與ssl一起工作,但是缺少文檔... – mgiammarco 2012-04-23 18:02:09
它有一個可怕的許可證 - 如果你使用這個,你需要使你的應用程序源代碼免費可用,這意味着它在商業上是沒有用的。 – tentimes 2012-11-20 20:31:14
只是好奇...如果客戶是Java,爲什麼使用踐踏? – 2012-02-19 13:16:19
該應用程序是一個Android應用程序,我不能使用JMS或openwire(據我所知)。 – mgiammarco 2012-02-20 10:37:07
你有沒有發現一個工作單塊+ SSL客戶端? – alexvetter 2013-08-28 09:59:32