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