• 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

  • 相关阅读:
    visual studio 注释与取消注释
    visual studio错误之 无法将参数 1 从“const char [5]”转换为“char *”
    sdl_ffmpeg_video
    sdl_ffmpeg_audio
    visual studio添加第三方库文件,每次都要配置包含目录和库目录(繁琐),一劳永逸的办法
    visual studio 错误之errorC2362:“gototmpstr”跳过了“XXXX”的初始化操作
    visual studio调用SDL2和ffmpeg
    没用过得库函数
    visual studio编译错误之xx被声明为已否决
    vim把一个文件的若干行追加到另一个文件
  • 原文地址:https://www.cnblogs.com/windows/p/2701613.html
Copyright © 2020-2023  润新知