zoukankan      html  css  js  c++  java
  • WebSphere MQ For JAVA编程实例实现MQ trigger样例

    MQTrigger.java源码如下:

    import java.io.*;
    import java.lang.*;
    import com.ibm.mq.*;
    
    class MQTrigger
    {
    
        private String structId;
        private String version;
        private String qName;
        private String processName;
        private String triggerData;
        private String applType;
        private String applId;
        private String envData;
        private String userData;
        private String qMgrName;
    
        /******************************************************/
        /* Constructor to parse the MQTMC2 stucture and set */
        /* the class attributes. */
        /* Values derived from field definitions given for */
        /* MQTMC2 in the WebSphere Application Programming */
        /* Reference. */
        /******************************************************/
        public MQTrigger(String tmcStruct) throws StringIndexOutOfBoundsException
        {
    
            structId = tmcStruct.substring(0,3).trim();
            version = tmcStruct.substring(4,8).trim();
            qName = tmcStruct.substring(8,55).trim();
            processName = tmcStruct.substring(56,103).trim();
            triggerData = tmcStruct.substring(104,167).trim();
            applType = tmcStruct.substring(168,171).trim();
            applId = tmcStruct.substring(172,427).trim();
            envData = tmcStruct.substring(428,555).trim();
            userData = tmcStruct.substring(556,683).trim();
            qMgrName = tmcStruct.substring(684,730).trim();
    
        }
    
        public String getStructId()
        {
            return(structId);
        }
    
        public String getVersion()
        {
            return(version);
        }
    
        public String getQueueName()
        {
            return(qName);
        }
    
        public String getProcessName()
        {
            return(processName);
        }
    
        public String getTriggerData()
        {
            return(triggerData);
        }
    
        public String getApplicationType()
        {
            return(applType);
        }
    
        public String getApplicationId()
        {
            return(applId);
        }
    
        public String getEnvironmentData()
        {
            return(envData);
        }
    
        public String getUserData()
        {
            return(userData);
        }
    
        public String getQueueManagerName()
        {
            return(qMgrName);
        }
    
    }

    JavaTrigger.java源码如下:

    import java.io.IOException;
    
    import com.ibm.mq.MQC;
    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;
    
    public class JavaTrigger
    {
    
    
        private MQQueueManager qMgr;
    
        public static void main (String args[]) throws IOException
        {
            if (args.length < 1)
            {
                System.out.println("This must be a triggered application");
            }
            else
            {
                JavaTrigger jt = new JavaTrigger();
                jt.start(args);
            }
            System.exit(0);
        }
    
    
        public void start(String args[])
        {
            try
            {
    
                MQException.log = null;
    
                /******************************************************/
                /* Create a MQTrigger class object to read the MQTMC2 */
                /* structure into the correct attribute. */
                /******************************************************/
                MQTrigger tmc = new MQTrigger(args[0]);
    
                /******************************************************/
                /* Connect to the queue manager identified by the */
                /* trigger. */
                /******************************************************/
    
                qMgr = new MQQueueManager(tmc.getQueueManagerName());
    
                /******************************************************/
                /* Open the queue identified by the trigger. */
                /******************************************************/
    
                int openOptions = MQC.MQOO_INPUT_AS_Q_DEF
                | MQC.MQOO_FAIL_IF_QUIESCING;
    
                MQQueue triggerQueue = qMgr.accessQueue(tmc.getQueueName(),
                openOptions,
                null, null, null);
    
                /******************************************************/
                /* Set up our options to get the first message */
                /* Wait 5 seconds to be cetain all messages are */
                /* processed. */
                /******************************************************/
                MQGetMessageOptions gmo = new MQGetMessageOptions();
                gmo.options = MQC.MQGMO_WAIT | MQC.MQGMO_CONVERT;
                gmo.waitInterval = 5000;
    
                MQMessage triggerMessage = new MQMessage();
    
                /*****************************************************/
                /* Read each message from the queue until there are */
                /* no more messages to get. */
                /*****************************************************/
                long rc = 0;
                do
                {
                    rc = 0;
                    try
                    {
                        /***********************************************/
                        /* Set the messageId and correlationId to none */
                        /* to get all messages with no message */
                        /* selection. */
                        /***********************************************/
                        triggerMessage.clearMessage();
                        triggerMessage.correlationId = MQC.MQCI_NONE;
                        triggerMessage.messageId = MQC.MQMI_NONE;
    
                        triggerQueue.get(triggerMessage, gmo);
                        String msg = triggerMessage.readString(triggerMessage.getMessageLength());
    
                        /***********************************************/
                        /* Insert business logic for the message here. */
                        /* For this sample, echo the first 20 */
                        /* characters of the message. */
                        /***********************************************/
                        if (msg.length() > 20)
                        {
                            System.out.println("Message: " + msg.substring(0,20));
                        }
                        else
                        {
                            System.out.println("Message: " + msg);
                        }
    
    
                    }
                    catch (MQException mqEx)
                    {
                        rc = mqEx.reasonCode;
                        if (rc != MQException.MQRC_NO_MSG_AVAILABLE)
                        {
                            System.out.println(" PUT Message failed with rc = "
                            + rc);
                        }
                    }
                    catch (Exception ex)
                    {
                        System.out.println("Generic exception: " + ex);
                        rc = 1;
                    }
    
                } while (rc == 0);
    
    
                /**********************************************************/
                /* Cleanup MQ resources prior to exiting. */
                /**********************************************************/
                triggerQueue.close();
                qMgr.disconnect();
            }
    
            catch (MQException mqEx)
            {
                System.out.println("MQ failed with completion code = "
                + mqEx.completionCode
                + " and reason code = " + mqEx.reasonCode);
            }
        }
    
    }

    转载:http://ganquan.itpub.net/post/8445/290844

  • 相关阅读:
    iOS 两种易混淆的存储路径
    'Could not load NIB in bundle: 'NSBundle xxx/storeFlix.app> ' with name 'UIViewController-w6Q-ra-j06' and directory 'StoreFlixIpad.storyboardc
    [友盟微博分享]does not contain bitcode. You must rebuild it with
    ZT android -- 蓝牙 bluetooth (四)OPP文件传输
    ZT android -- 蓝牙 bluetooth (二) 打开蓝牙
    ZT android -- 蓝牙 bluetooth (五)接电话与听音乐
    ZT android -- 蓝牙 bluetooth (一) 入门
    ZT extern "C"的用法解析
    转自csdn:计算机启动过程
    年份的读法与读数字不同
  • 原文地址:https://www.cnblogs.com/windows/p/2701613.html
Copyright © 2011-2022 走看看