java获取队列长度_java – 如何查找horneq队列长度
我正在使用Hornetq 2.0我不明白我怎么知道目前有多少消息在队列中.
这是一个非常有用的功能,所以我可以在运行时知道我的消费者是否足够快地消费消息.
我没有使用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;
}
我正在使用Hornetq 2.0我不明白我怎么知道目前有多少消息在队列中. 这是一个非常有用的功能,所以我可以在运行时知道我的消费者是否足够快地消费消息. 我没有使用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; }