How to find horneq queue length

I am using Hornetq 2.0, I do not understand how I can find out how many messages in the queue are in the queue.

This is a very useful feature, so I can know at runtime if my consumer consumes the message fast enough.

I do not use the JMS api, but a very optimized base API.

What is the correct (fastest) way to get the number of messages in a queue?

I found 2 ways, but don’t know how to do it right.

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

or

 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; } 
+6
java jms message-queue hornetq
source share
3 answers

I found these 2 ways

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

and

 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; } 
+6
source share

You should use the management interface, at the end of this document is an example of retrieving messages: http://hornetq.sourceforge.net/docs/hornetq-2.0.0.GA/user-manual/en/html/management.html#management.message -counters

+2
source share

hornetq-2.2.14.Final trial with an example on message counters. It is located at hornetq-2.2.14.Final/examples/jms/message-counters

+1
source share

All Articles