How to retrieve the amount of messages in a RabbitMQ queue?

0

Has anyone here already worked with rabbitmq implementing java for sending messages? I need some help from you.

I need to retrieve the amount of messages in a queue in RabbitMQ. This is my class, it is a task, in which you are consuming the messages:

@Override
public void run() {
    ProtocolInternalMessageFacade protocolInternalFacade = new ProtocolInternalMessageFacade();

    while (true) {
        try {
            if (CheckServer.hostAvailabilityCheck()) {
                /* 
                 * quando eu passo o mouse em cima desse queueingConsumer,
                 * é ai que me mostra a propriedade size, se por exemplo estiver 2
                 * mensagens nessa propriedade, mostra Size = 2
                 */
                QueueingConsumer queueingConsumer = Consumer.getQueueingConsumer(QUEUE_NAME);
                QueueingConsumer.Delivery delivery = null;

                try {
                    QueueingConsumer.Delivery deliveryTmp;

                    /* 
                     * aqui eu fiz o seguinte: por exemplo coloquei um for de um a
                     * 5(por isso eu queria essa quantidade de mensagem que tem nessa
                     * fila, para que fazer esse for de acordo com essa quantidade.)
                     * Se eu estiver por exemplo 2 registros, ele sempre irá pegar
                     * esse ultimo registro, salvar e mostrar para mim.
                     */
                    for (int i = 0; i < 5; i++){
                        deliveryTmp = queueingConsumer.nextDelivery(5);

                        if(deliveryTmp != null){
                            delivery = deliveryTmp;
                        }
                    }
                } catch (InterruptedException | ShutdownSignalException |
                            ConsumerCancelledException e) {
                    e.printStackTrace(System.err);
                    LOGGER.trace(ConvertStackTrace.getStringFromStackTrace(e));
                }

                if (delivery != null) {
                    ProtocolInternalMessage protocolInternalMessage = 
                            (ProtocolInternalMessage) ConvertData.fromBytes(delivery.getBody());
                    protocolInternalFacade.insert(protocolInternalMessage);
                }

                Consumer.getChannel().close();
                Consumer.getConnection().close();
            } else {
                System.out.println("Server Not Found. Please, contact the administrator");
                LOGGER.error("Error connect server");
            }

            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException | ShutdownSignalException | 
                    ConsumerCancelledException | ServiceException | IOException e) {
            e.printStackTrace(System.err);
            LOGGER.trace(ConvertStackTrace.getStringFromStackTrace(e));
        }

    }
}
    
asked by anonymous 25.04.2015 / 05:07

0 answers