我使用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的示例。 –