Saturday, October 6, 2018

WebSphere MQ Consumer and producer

Put messages in IBM MQ using Java

This tutorial will help you create simple consumer and producer app that uses Websphere MQ

 Directory structure:

Input text file for your message

message.txt


msg=Message created by SimpleJMSProducer

 
SimpleJMSProducer

 

package com.mq;

import com.ibm.mq.MQException;
import com.ibm.mq.constants.CMQC;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

/**
 * This class is an example of JMS Client. Using sendMsg() method you can send a
 * message to the IBM MQ
 *
 * To run this example you need com.ibm.mq.jar and com.ibm.mq.jmqi.jar
 *
 *
 */
public class SimpleJMSProducer {
    public void sendMsg(String msg) {
        MQQueueManager queueManager = null;
        MQMessage mqMessage = null;
        MQPutMessageOptions myPMO = null;

        try {

            // creating queue manager
            queueManager = new MQQueueManager("QMGR1");

            // creating queue`

            MQQueue queue = queueManager.accessQueue("MQ.REQUEST", CMQC.MQOO_OUTPUT);

            // configuring message encoding, character set, and format

            mqMessage = new MQMessage();
            mqMessage.encoding = new Integer("546");
            mqMessage.characterSet = new Integer("1208");
            mqMessage.format = "MQSTR";

            // sending message

            mqMessage.writeString(msg);
            myPMO = new MQPutMessageOptions();
            queue.put(mqMessage, myPMO);

            // Closing Queue after putting message
            queue.close();

        } catch (MQException | NumberFormatException | IOException je) {
            je.printStackTrace(System.err);
        } finally {
            if (queueManager != null)
                try {
                    // Disconnecting queue manager
                    queueManager.disconnect();
                } catch (MQException ex) {
                    ex.printStackTrace(System.err);
                }
        }
    }

    public static void main(String[] args) throws FileNotFoundException, IOException {
        Properties prop = new Properties();
        prop.load(new FileInputStream("C:/Learning/MQQUEQE/src/com/message/message.txt"));
        String message = prop.getProperty("msg");
        new SimpleJMSProducer().sendMsg(message);
        System.out.println(message);

    }
}

You will find message sent by above program in MQ by browsing queque( MQ.REQUEST )


 

 SimpleJMSProducer

package com.mq;

import com.ibm.mq.MQException;
import com.ibm.mq.constants.CMQC;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

/**
 * This class is an example of JMS Client. Using sendMsg() method you can send a
 * message to the IBM MQ
 *
 * To run this example you need com.ibm.mq.jar and com.ibm.mq.jmqi.jar
 *
 *
 */
public class SimpleJMSProducer {
    public void sendMsg(String msg) {
        MQQueueManager queueManager = null;
        MQMessage mqMessage = null;
        MQPutMessageOptions myPMO = null;

        try {

            // creating queue manager
            queueManager = new MQQueueManager("QMGR1");

            // creating queue`

            MQQueue queue = queueManager.accessQueue("MQ.REQUEST", CMQC.MQOO_OUTPUT);

            // configuring message encoding, character set, and format

            mqMessage = new MQMessage();
            mqMessage.encoding = new Integer("546");
            mqMessage.characterSet = new Integer("1208");
            mqMessage.format = "MQSTR";

            // sending message

            mqMessage.writeString(msg);
            myPMO = new MQPutMessageOptions();
            queue.put(mqMessage, myPMO);

            // Closing Queue after putting message
            queue.close();

        } catch (MQException | NumberFormatException | IOException je) {
            je.printStackTrace(System.err);
        } finally {
            if (queueManager != null)
                try {
                    // Disconnecting queue manager
                    queueManager.disconnect();
                } catch (MQException ex) {
                    ex.printStackTrace(System.err);
                }
        }
    }

    public static void main(String[] args) throws FileNotFoundException, IOException {
        Properties prop = new Properties();
        prop.load(new FileInputStream("C:/Learning/MQQUEQE/src/com/message/message.txt"));
        String message = prop.getProperty("msg");
        new SimpleJMSProducer().sendMsg(message);
        System.out.println(message);

    }
}
Once message consumes,current queue depth becomes 0.

 

 

ActiveMQ Consumer and producer

 

0 comments:

Post a Comment