Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4835
  • Last Modified:

How to get message count on a Weblogic queue via JMX

Hello,
    I am trying to create a client that will remotely be able to get the message count from a JMS queue via JXM ? Since I am new to the entire JMX thing so I have been reading a lot of articles and forums about this and so far from what i understand is that JMX api include a QueueBrowser that will allow one to inspect the queue. My question is how do I get the QueueBrowser ? I am using Weblogic so if there are specific weblogic APIs I can use to ease my task please let me know.

Thanks in advance

Adil
0
AdilK
Asked:
AdilK
  • 2
  • 2
2 Solutions
 
AdilKAuthor Commented:
Yes I have. These are for version prior to WL 10. Apparently there were weblogic specific classes one could use to query the queues and stuff but they removed it in version 9 I believe and suggested to go regular JMX route. Thats the route I do not know how to take. My problem is that I need to query the server for Queues and for each queue see how many messages are present i.e get a message count. I know there are classes such as QueueBrowser and QueueConnectionFactory but I dont know how to instantiate them. If any one can give me specific examples how to instantiate QueueConnectionFactory using javax.naming.Context from a WL server with code it would be great.
0
 
girionisCommented:
You could combine them both by implementing your own code to do this, by just using the standard JMS and JMX APIs

http://java.sun.com/products/jms/tutorial/
http://java.sun.com/j2se/1.5.0/docs/guide/jmx/tutorial/tutorialTOC.html

Alternatively you can look here for some sampel code:

http://forums.bea.com/thread.jspa?threadID=400003747

although the user says that it's not quite working.
0
 
AdilKAuthor Commented:
Thanks for the help . I resolved it and following is my solution for anyone who comes after me tryingto do the same thing.


public void getQueueData() {
		QueueConnectionFactory factory = null;
		Queue queue = null;
		javax.jms.QueueSession qsession = null;
		javax.jms.QueueConnection qcon = null;
		javax.naming.Context ic = null;
 
		Environment env = new Environment();
		env.setSecurityPrincipal("weblogic");
		env.setSecurityCredentials("weblogic");
		env.setProviderUrl("t3://localhost:7001");
		try {
			ic = (javax.naming.Context) env.getInitialContext();
			
			factory = (QueueConnectionFactory) ic
					.lookup("javax.jms.QueueConnectionFactory");
			queue = (Queue) ic.lookup(YOUR_QUEUE_NAME);
 
			qcon = factory.createQueueConnection();
 
			/* creating a queue sessionobject */
			
			qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
			QueueBrowser queueBrowser = qsession.createBrowser(queue);			
			qcon.start();
 
			java.util.Enumeration pendingMessages = queueBrowser.getEnumeration();
			int count = 0;
			while (pendingMessages.hasMoreElements()) {
			   count++;
			   javax.jms.Message message = (Message)pendingMessages.nextElement();
			   Date messageDate = new Date(message.getJMSTimestamp());
			   System.out.println("Message Date is " + messageDate);
		    }
			System.out.println("Queue messages " + count);
			
		} catch (NamingException e) {
			e.printStackTrace();
		}
		catch (JMSException e) {
			e.printStackTrace();
		}
	}

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now