如何找到horneq队列长度

我正在使用Hornetq 2.0我不明白我怎么知道目前有多少消息在队列中。

这是一个非常有用的function,所以我可以在运行时知道我的消费者是否足够快地消费消息。

我没有使用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; } 

我发现了这两种方式

 public synchronized 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; } 

您必须使用管理界面,本文末尾是检索邮件计数的示例: http : //hornetq.sourceforge.net/docs/hornetq-2.0.0.GA/user-manual/en/html/ management.html#management.message的计数器

hornetq-2.2.14.Final附带消息计数器的示例。 它位于hornetq-2.2.14.Final/examples/jms/message-counters