Ola,
preciso mostrar a quantidade de mensagens que estão na fila JMS de algumas Queues dentro da minha aplicação. Até o momento estou utilizando um objeto gerado através do javax.jms.QueueSession, o javax.jms.QueueBrowser e fazendo a contagem das mensagens pelo Enumeration fornecido por este objeto ( javax.jms.QueueBrowser.getEnumeratinon() ) com um while e nextElement().
Desta maneira funciona, mas peca um pouco em performance, já que tenho que varrer o Enumeration e fazer count++ em uma fila de 100 mil mensagens que é o ambiente que tenho.
Alguém conhece alguma outra maneira de implementar isto ? estou buscando documentação da própria IBM ( meu servidor de aplicação é o Websphere 6 ) mas até o momento não evolui…
Att.
[]s
Anderson Cruz
Uma vez pesquisei isso e a unica maneira que encontrei foi essa que você está usando. Não importa o provider que você está usando, quem te dará essa contagem é a API JMS, então, acredito que não tenha outra maneira.
Que tosco mesmo - olhei e o primeiro exemplo fazia exatamente isso (percorria a fila inteira, argh). Acho que não é o jeito mais razoável não.
Pelo que imagino, o correto é pegar uma propriedade da fila (na documentação do MQ, parece ser CURDEPTH ) e mostrar o valor dessa propriedade:
http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=%2Fcom.ibm.mq.explorer.doc%2Fe_properties_queues.htm
Tenho uma fila MQ para fazer o mesmo, e no caso dela a implementação da Queue do MQ existe o parametro de profundidade da fila, o que me evita de varre-la toda para saber quantas mensagens existe nela.
Ainda assim obrigado pela resposta.