我使用http://svn.apache.org/repos/asf/activemq/trunk/assembly/src/release/example/src/StompExample.java的示例變體從隊列中接收消息。我想要做的是繼續收聽隊列,並在收到新消息時執行一些操作。問題是,我找不到一種方法來向任何相關對象註冊偵聽器。我已經試過類似:ActiveMQ註冊監聽器StompConnection
public static void main(String args[]) throws Exception {
StompConnection connection = null;
try {
connection = new StompConnection();
connection.open("localhost", 61613);
connection.connect("admin", "activemq");
connection.subscribe("/queue/worker", Subscribe.AckModeValues.AUTO);
while (true) {
StompFrame message = connection.receive();
System.out.println(message.getBody());
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
但這並不能作爲超時工作幾秒鐘(java.net.SocketTimeoutException: Read timed out
)後發生。我能做些什麼來無限期地聽這個隊列嗎?
我相信在源碼樹中有一些例子,只需從Git中拉出來看一看。我認爲ActiveMQ Apollo還附帶了一些使用StompJMS的示例。 –