Tuesday, December 11, 2018

[Java] Read MQ Using Message Acknowledgment

Sample code to read Websphere MQ and using acknowledgment to automatically remove the message from queue. If the client did not acknowledge, the message will be retained in the queue.


import javax.jms.JMSException;
import javax.jms.Session;
import javax.jms.TextMessage;
import com.ibm.mq.jms.MQQueue;
import com.ibm.mq.jms.MQQueueConnection;
import com.ibm.mq.jms.MQQueueConnectionFactory;
import com.ibm.mq.jms.MQQueueReceiver;
import com.ibm.mq.jms.MQQueueSession;
import com.ibm.msg.client.wmq.WMQConstants;

public class MQReader {
 private MQQueueConnection connection;

 private void read() {
  MQQueueConnectionFactory cf = new MQQueueConnectionFactory();
  try {
   cf.setHostName("Hostname");
   cf.setPort(1414);
   cf.setQueueManager("QMGR");
   cf.setChannel("MyChannel");
   cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE,             

   WMQConstants.WMQ_CM_CLIENT);
   connection = (MQQueueConnection)          
   cf.createQueueConnection("MyUsername","MyPassword");
   MQQueueSession session = (MQQueueSession)     
   connection.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE);
   MQQueue localQueue = (MQQueue)    
   session.createQueue("queue:///MY.QUEUE");

   connection.start();
   MQQueueReceiver queueReceiver = (MQQueueReceiver)     
   session.createReceiver(localQueue);

   while(true) {
    TextMessage msg = (TextMessage) queueReceiver.receive();
    System.out.println(i +". Message is - " + msg.getText());
    msg.acknowledge();
   }


  } catch (JMSException e) {
    e.printStackTrace();
  }

}//end method


 public static void main(String[] args) {
  new MQReader().read();
 }


}//end class

No comments:

Post a Comment