First, let’s briefly introduce websphere mq and its installation and use.
websphere mq: used to transmit information with cross-platform functionality.
1 Install websphere mq and start
2 websphere mq creates queue Manager (such as: MQSI_SAMPLE_QM)
3. Create the queue type and select the Local type (such as lq)
4. Establish channels type and select Server Connection (such as BridgeChannel)
Next, let's look at the example code:
MQFileReceiver.javapackage com.mq.dpca.file; import java.io.File; import java.io.FileOutputStream; import com.ibm.mq.MQEnvironment; import com.ibm.mq.MQException; import com.ibm.mq. MQGetMessageOptions;import com.ibm.mq.MQMessage;import com.ibm.mq.MQQueue;import com.ibm.mq.MQQueueManager;import com.ibm.mq.constants.MQConstants;import com.mq.dpca.msg.MQConfig;import com.mq.dpca.util.ReadCmdLine; import com.mq.dpca.util.RenameUtil; /** * * MQ group receiving file function * Active polling */public class MQFileReceiver { private MQQueueManager qmgr; // Connect to the queue manager private MQQueue inQueue; // Transmission queue private String queueName = ""; // Queue name private String host = ""; // private int port = 1414; // Listener port number private String channel = ""; // Channel name private String qmgrName = ""; // Queue manager private MQMessage inMsg; // Create message buffer private MQGetMessageOptions gmo; // Set message acquisition options private static String fileName = null; // Receive messages on the queue and store them in the file private int ccsid = 0; private static String file_dir = null; /** * Program entry* * @param args */ public static void main(String args[]) { MQFileReceiver mfs = new MQFileReceiver(); //Initialize the connection mfs.initproperty(); //Receive files mfs.runGoupReceiver(); //Get the shell script name// String shellname = MQConfig.getValueByKey(fileName);// if( shellname!=null&&!"".equals(shellname)){// //Calling shell// ReadCmdLine.callShell(shellname);// }else{// System.out.println("have no shell name,Only receive files.");// } } public void runGoupReceiver() { try { init(); getGroupMessages (); qmgr.commit(); System.out.println("/n Messages successfully Received "); } catch (MQException mqe) { mqe.printStackTrace(); try { System.out.println("/n Backing out Transaction "); qmgr.backout(); System.exit(2); } catch (Exception e) { e.printStackTrace( ); System.exit(2); } } catch (Exception e) { e.printStackTrace(); System.exit(2); } } /** * Initialize server connection information * * @throws Exception */ private void init() throws Exception { /* Set MQEnvironment properties for client connections */ MQEnvironment.hostname = host; MQEnvironment.channel = channel; MQEnvironment.port = port; /* Connect to queue manager*/ qmgr = new MQQueueManager(qmgrName); /* Set the queue open option for input */ int opnOptn = MQConstants.MQOO_INPUT_AS_Q_DEF | MQConstants.MQOO_FAIL_IF_QUIESCING; /* Open the queue for input */ inQueue = qmgr.accessQueue(queueName, opnOptn, null, null, null); } /** * Accept The main function of the file * * @throws Exception */ public void getGroupMessages() { /* Set get message options */ gmo = new MQGetMessageOptions(); gmo.options = MQConstants.MQGMO_FAIL_IF_QUIESCING; gmo.options = gmo.options + MQConstants.MQGMO_SYNCPOINT; /* Wait for messages */ gmo.options = gmo.options + MQConstants.MQGMO_WAIT; /* Set waiting time limit */ gmo.waitInterval = 5000; /* Get messages only */ gmo.options = gmo.options + MQConstants.MQGMO_ALL_MSGS_AVAILABLE; /* Get messages in editing order */ gmo.options = gmo.options + MQConstants.MQGMO_LOGICAL_ORDER; gmo.matchOptions = MQConstants.MQMO_MATCH_GROUP_ID; /* Create message buffer*/ inMsg = new MQMessage(); try { FileOutputStream fos = null; /* Process group message*/ while (true) { try { inQueue.get(inMsg, gmo ); if (fos == null) { try { fileName = inMsg.getStringProperty("fileName"); String fileName_full = null; fileName_full = file_dir + RenameUtil.rename(fileName); fos = new FileOutputStream(new File(fileName_full)); int msgLength = inMsg.getMessageLength(); byte[] buffer = new byte[msgLength]; inMsg.readFully(buffer); fos.write(buffer, 0, msgLength); /* Check if it is the last message identifier*/ char x = gmo.groupStatus; if (x == MQConstants.MQGS_LAST_MSG_IN_GROUP) { System.out.println ("Last Msg in Group"); break; } inMsg.clearMessage(); } catch (Exception e) { System.out .println("Receiver the message without property,do nothing!"); inMsg.clearMessage(); } } else { int msgLength = inMsg.getMessageLength(); byte[] buffer = new byte [msgLength]; inMsg.readFully(buffer); fos.write(buffer, 0, msgLength); /* Check whether it is the last message identifier*/ char x = gmo.groupStatus; if (x == MQConstants.MQGS_LAST_MSG_IN_GROUP) { System.out.println("Last Msg in Group"); break; } inMsg.clearMessage(); } } catch (Exception e) { char x = gmo.groupStatus; if (x == MQConstants.MQGS_LAST_MSG_IN_GROUP) { System.out.println("Last Msg in Group"); } break; } } if (fos != null) fos.close(); } catch (Exception e) { System.out.println( e.getMessage()); } } public void initproperty() { MQConfig config = new MQConfig().getInstance(); if (config.getMQ_MANAGER() != null) { qmgrName = config.getMQ_MANAGER(); queueName = config.getMQ_QUEUE_NAME(); channel = config.getMQ_CHANNEL(); host = config.getMQ_HOST_NAME( ); port = Integer.valueOf(config.getMQ_PROT()); ccsid = Integer.valueOf(config.getMQ_CCSID()); file_dir = config.getFILE_DIR(); } }}