WebSphere MQ for Java programming instance-Request/reply-Example

Source: Internet
Author: User

Source code of requester. Java:

import com.ibm.mq.*;public class Requester {    public static void main(String args[]) {        try {            String hostName = "127.0.0.1";            String channel = "CHAN1";            String qManager = "QM1";            String requestQueue = "QL1";            String replyToQueue = "REPLYQ";            String replyToQueueManager = "QM1";            // Set up the MQEnvironment properties for Client Connections            MQEnvironment.hostname = hostName;            MQEnvironment.channel = channel;            MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,            MQC.TRANSPORT_MQSERIES);            MQEnvironment.CCSID = 1381;            // Connection To the Queue Manager            MQQueueManager qMgr = new MQQueueManager(qManager);            int openOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;            // Open the queue            MQQueue queue = qMgr.accessQueue(requestQueue, openOptions, null,            null, null);            // Set the put message options , we will use the default setting.            MQPutMessageOptions pmo = new MQPutMessageOptions();            pmo.options = pmo.options + MQC.MQPMO_NEW_MSG_ID;            pmo.options = pmo.options + MQC.MQPMO_SYNCPOINT;            MQMessage outMsg = new MQMessage();            // Create the message buffer            outMsg.format = MQC.MQFMT_STRING;            // Set the MQMD format field.            outMsg.messageFlags = MQC.MQMT_REQUEST;            outMsg.replyToQueueName = replyToQueue;            outMsg.replyToQueueManagerName = replyToQueueManager;            // Prepare message with user data            String msgString = "Test Request Message from Requester program ";            outMsg.writeString(msgString);            // Now we put The message on the Queue            queue.put(outMsg, pmo);            // Commit the transaction.            qMgr.commit();            System.out            .println(" The message has been Sussesfully putnn#########");            // Close the the Request Queue            queue.close();            // Set openOption for response queue            openOptions = MQC.MQOO_INPUT_SHARED | MQC.MQOO_FAIL_IF_QUIESCING;            MQQueue respQueue = qMgr.accessQueue(replyToQueue, openOptions,            null, null, null);            MQMessage respMessage = new MQMessage();            MQGetMessageOptions gmo = new MQGetMessageOptions();            gmo.options = gmo.options + MQC.MQGMO_SYNCPOINT;            // Get messages under syncpoint control            gmo.options = gmo.options + MQC.MQGMO_WAIT;            // Wait for Response Message            gmo.matchOptions = MQC.MQMO_MATCH_CORREL_ID;            gmo.waitInterval = 10000;            respMessage.correlationId = outMsg.messageId;            System.out.println("The response message correlID : " + respMessage.correlationId);            // Get the response message.            respQueue.get(respMessage, gmo);            String response = respMessage.readString(respMessage            .getMessageLength());            System.out.println("The response message is : " + response);            qMgr.commit();            respQueue.close();            qMgr.disconnect();        } catch (MQException ex) {            System.out.println("An MQ Error Occurred: Completion Code is :t"            + ex.completionCode + "nn The Reason Code is :t"            + ex.reasonCode);            ex.printStackTrace();        } catch (Exception e) {            e.printStackTrace();        }    }}

 

Responder. Java source code is as follows:

import com.ibm.mq.*;public class Responder {    public static void main(String args[]) {        try {            String hostName = "127.0.0.1";            String channel = "CHAN1";            String qManager = "QM1";            String qName = "QL1";            // Set up the MQEnvironment properties for Client            // Connections            MQEnvironment.hostname = hostName;            MQEnvironment.channel = channel;            MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,            MQC.TRANSPORT_MQSERIES);            MQEnvironment.CCSID = 1381;            // Connection To the Queue Manager            MQQueueManager qMgr = new MQQueueManager(qManager);            /*            * Set up the open options to open the queue for out put and            * additionally we have set the option to fail if the queue manager            * is quiescing.            */            int openOptions = MQC.MQOO_INPUT_SHARED            | MQC.MQOO_FAIL_IF_QUIESCING;            // Open the queue            MQQueue queue = qMgr.accessQueue(qName, openOptions, null, null,            null);            // Set the put message options.            MQGetMessageOptions gmo = new MQGetMessageOptions();            gmo.options = gmo.options + MQC.MQGMO_SYNCPOINT;            // Get messages under syncpoint control            gmo.options = gmo.options + MQC.MQGMO_WAIT;            // Wait if no messages on the Queue            gmo.options = gmo.options + MQC.MQGMO_FAIL_IF_QUIESCING;            // Fail if QeueManager Quiescing            gmo.waitInterval = 3000;            // Sets the time limit for the wait.            /*            * Next we Build a message The MQMessage class encapsulates the data            * buffer that contains the actual message data, together with all            * the MQMD parameters that describe the message.            * To            * Build a new message, create a new instance of MQMessage class and            * use writxxx (we will be using writeString method). The put()            * method of MQQueue also takes an instance of the            * MQPutMessageOptions class as a parameter.            */            MQMessage inMsg = new MQMessage();            // Create the message buffer Get the message from the queue on to the message buffer.            queue.get(inMsg, gmo);            // Read the User data from the message.            String msgString = inMsg.readString(inMsg.getMessageLength());            System.out.println(" The Message from the Queue is : " + msgString);            // Check if message if of type request message and reply to the            // request.            if (inMsg.messageFlags == MQC.MQMT_REQUEST) {                System.out.println("Preparing To Reply To the Request ");                String replyQueueName = inMsg.replyToQueueName;                System.out.println("The reply queue: " + replyQueueName);                openOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;                MQQueue respQueue = qMgr.accessQueue(replyQueueName,                openOptions, inMsg.replyToQueueManagerName, null, null);                MQMessage respMessage = new MQMessage();                respMessage.correlationId = inMsg.messageId;                System.out.println("The response CorrelID " + respMessage.correlationId);                MQPutMessageOptions pmo = new MQPutMessageOptions();                respMessage.format = MQC.MQFMT_STRING;                respMessage.messageFlags = MQC.MQMT_REPLY;                String response = "Reply from the Responder Program ";                respMessage.writeString(response);                respQueue.put(respMessage, pmo);                System.out.println("The response Successfully send ");                qMgr.commit();                respQueue.close();            }            queue.close();            qMgr.disconnect();        } catch (MQException ex) {            System.out.println("An MQ Error Occurred: Completion Code is :t"            + ex.completionCode + "nn The Reason Code is :t"            + ex.reasonCode);            ex.printStackTrace();        } catch (Exception e) {            e.printStackTrace();        }    }}
Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.