From 34b9fdedacfb35402379d7d100bf93c01dc0f6a6 Mon Sep 17 00:00:00 2001 From: maddy Date: Tue, 5 Oct 2021 10:51:09 +0530 Subject: [PATCH] Update JMSSampleP2P.java I have added a some code in JMSSampleP2P.java to get how many messages are on the queue. Added a listAction=getMessageCount --- .../wasdev/sample/jms/web/JMSSampleP2P.java | 59 ++++++++++++++++++- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/src/main/java/wasdev/sample/jms/web/JMSSampleP2P.java b/src/main/java/wasdev/sample/jms/web/JMSSampleP2P.java index a584b2b..6b56ec4 100644 --- a/src/main/java/wasdev/sample/jms/web/JMSSampleP2P.java +++ b/src/main/java/wasdev/sample/jms/web/JMSSampleP2P.java @@ -14,7 +14,7 @@ * THE SAMPLE SOURCE CODE. IBM HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, * UPDATES, ENHANCEMENTS OR MODIFICATIONS TO THE SAMPLE SOURCE CODE. * - * (C) Copyright IBM Corp. 2001, 2013. + * (C) Copyright IBM Corp. 2001, 2021. * All Rights Reserved. Licensed Materials - Property of IBM. */ @@ -22,8 +22,12 @@ import java.io.IOException; import java.io.PrintWriter; +import java.util.Enumeration; +import javax.jms.JMSException; +import javax.jms.Message; import javax.jms.Queue; +import javax.jms.QueueBrowser; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; import javax.jms.QueueReceiver; @@ -31,6 +35,7 @@ import javax.jms.QueueSession; import javax.jms.TextMessage; import javax.naming.InitialContext; +import javax.naming.NamingException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; @@ -66,7 +71,7 @@ protected void doGet(HttpServletRequest request, if (strAction == null) { out.println("Please specify the Action"); - out.println("Example : http://:/JMSApp/JMSSampleP2P?ACTION=sendAndReceive"); + out.println("Example : http://:/jms11-JMSSample/JMSSampleP2P?ACTION=sendAndReceive"); } else if (strAction.equalsIgnoreCase("sendAndReceive")) { // call the Send and Receive Message sendAndReceive(request, response); @@ -84,6 +89,8 @@ protected void doGet(HttpServletRequest request, // Send message to be processed by MDB and wait from MDB // response mdbRequestResponse(request, response); + }else if (strAction.equalsIgnoreCase("getMessageCount")) { + getMessageCount(request, response); } else { out.println("Incorrect Action Specified, the valid actions are"); out.println("ACTION=sendAndReceive"); @@ -91,6 +98,7 @@ protected void doGet(HttpServletRequest request, out.println("ACTION=receiveAllMessages"); out.println("ACTION=receiveAllMessagesSelectors"); out.println("ACTION=mdbRequestResponse"); + out.println("ACTION=getMessageCount"); } } catch (Exception e) { @@ -338,6 +346,18 @@ public void mdbRequestResponse(HttpServletRequest request, out.println("Message sent successfully"); + + QueueBrowser queueBrowser = session.createBrowser(queue); + 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"); // Waiting for the MDB to process the message and send the reply message // Receive the message from MDBREPLYQ to validate the test scenario Queue queue2 = (Queue) new InitialContext() @@ -367,5 +387,40 @@ public void mdbRequestResponse(HttpServletRequest request, out.println("MDBRequestResponse Completed"); }// end of MDBRequestResponse + + private void getMessageCount(HttpServletRequest request, HttpServletResponse response) throws IOException, NamingException, JMSException { + PrintWriter out = response.getWriter(); + out.println("getMessageCount Started"); + + // create a queue connection factory + QueueConnectionFactory cf1 = (QueueConnectionFactory) new InitialContext() + .lookup("java:comp/env/jndi_JMS_BASE_QCF"); + // create a queue by looking up from the JNDI repository + Queue queue = (Queue) new InitialContext() + .lookup("java:comp/env/jndi_INPUT_Q"); + + // create a queue connection + QueueConnection con = cf1.createQueueConnection(); + con.start(); + + QueueSession session = con.createQueueSession(false, + javax.jms.Session.AUTO_ACKNOWLEDGE); + + QueueBrowser queueBrowser = session.createBrowser(queue); + Enumeration e = queueBrowser.getEnumeration(); + int numMsgs = 0; + + // count number of messages + while (e.hasMoreElements()) { + e.nextElement(); + numMsgs++; + } + + out.println(queue + " has " + numMsgs + " messages"); + + if (con != null) + con.close(); + out.println("getMessageCount Completed"); + } }