计算JMS队列中的消息数

查看JMS队列并获取其中的所有消息的最佳方法是什么?

如何计算队列中的消息数?

谢谢。

使用JmsTemplate

 public int getMessageCount(String messageSelector) { return jmsTemplate.browseSelected(messageSelector, new BrowserCallback() { @Override public Integer doInJms(Session s, QueueBrowser qb) throws JMSException { return Collections.list(qb.getEnumeration()).size(); } }); } 

这是您可以计算队列中的消息数的方法

 public static void main(String[] args) throws Exception { // get the initial context InitialContext ctx = new InitialContext(); // lookup the queue object Queue queue = (Queue) ctx.lookup("queue/queue0"); // lookup the queue connection factory QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx. lookup("queue/connectionFactory"); // create a queue connection QueueConnection queueConn = connFactory.createQueueConnection(); // create a queue session QueueSession queueSession = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); // create a queue browser QueueBrowser queueBrowser = queueSession.createBrowser(queue); // start the connection queueConn.start(); // browse the messages Enumeration e = queueBrowser.getEnumeration(); int numMsgs = 0; // count number of messages while (e.hasMoreElements()) { Message message = (Message) e.nextElement(); numMsgs++; } System.out.println(queue + " has " + numMsgs + " messages"); // close the queue connection queueConn.close(); }