私はHornetq 2.0を使用していますが、現在どのくらいのメッセージがキューに入っているのかわかりません。horneqの検索方法キューの長さ
これは非常に便利な機能なので、消費者がメッセージを十分に消費しているかどうかを実行時に知ることができます。
私はJMS APIを使用せず、高度に最適化されたコアAPIを使用しています。
キュー内のメッセージ数を取得する正しい方法(最速)は何ですか?
私は2つの方法を見つけましたが、それを行う正しい方法がわかりません。あなたはこのドキュメントの最後に、管理インターフェイスを使用する必要が
public int size(){
ClientSession session;
try {
session = sf.createSession(false, false, false);
ClientRequestor requestor = new ClientRequestor(session, "hornetq.management");
ClientMessage m = session.createMessage(false);
ManagementHelper.putAttribute(m, "core.queue." + queueName, "messageCount");
ClientMessage reply = requestor.request(m);
int count = (Integer) ManagementHelper.getResult(reply);
return count;
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
または
public synchronized int size(){
ClientSession coreSession = null;
int count = 0;
try {
coreSession = sf.createSession(false, false, false);
ClientSession.QueueQuery result;
result = coreSession.queueQuery(new SimpleString(queueName));
count = result.getMessageCount();
} catch (HornetQException e) {
e.printStackTrace();
} finally {
if (coreSession!= null){
try {
coreSession.close();
} catch (HornetQException e) {
e.printStackTrace();
}
}
}
return count;
}