http://svn.apache.org/repos/asf/activemq/trunk/assembly/src/release/example/src/StompExample.javaにある例のバリエーションを使用して、キューからメッセージを受信しています。私がやろうとしているのは、キューをリッスンし続け、新しいメッセージを受信したときに何らかのアクションを実行することです。問題は、関連するオブジェクトにリスナーを登録する方法が見つからなかったことです。私は次のようなことを試しました:
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
)。このキューを無期限に聞くために私にできることはありますか?