Как найти длину очереди 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;

}
6
задан Vadzim 19 March 2012 в 14:51
поделиться