Exemple #1
0
        /// <summary>
        /// Write Message to Local Queue
        /// </summary>
        /// <param name="strInputMsg">Text Message</param>
        /// <param name="strqueueName">Queue Name</param>
        /// <returns></returns>
        public MQMessageStatus WriteLocalQMsg(string strInputMsg, string strQueueName)
        {
            MQMessageStatus messageStatus = new MQMessageStatus();
            string          strReturn     = string.Empty;

            SendQueueName = strQueueName;
            try
            {
                queue = queueManager.AccessQueue(SendQueueName,
                                                 MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
                message      = strInputMsg;
                queueMessage = new MQMessage();
                queueMessage.WriteString(message);
                queueMessage.Format    = MQC.MQFMT_STRING;
                queuePutMessageOptions = new MQPutMessageOptions();
                queue.Put(queueMessage, queuePutMessageOptions);
                strReturn = "Message sent to the queue successfully";

                messageStatus.Message = strReturn;
                messageStatus.Status  = true;
            }
            catch (MQException MQexp)
            {
                strReturn             = "Exception: " + MQexp.Message;
                messageStatus.Message = strReturn;
                messageStatus.Status  = false;
            }
            catch (Exception exp)
            {
                strReturn             = "Exception: " + exp.Message;
                messageStatus.Message = strReturn;
                messageStatus.Status  = false;
            }
            return(messageStatus);
        }
Exemple #2
0
        private bool sendMessage(string queueName, int requestId, MQQueue queue, MQQueueManager manager, string messageId, string message, string correlationId, Object lockObject)
        {
            lock (lockObject)
            {
                bool sentMessage = false;
                try
                {
                    MQPutMessageOptions pmo = new MQPutMessageOptions();
                    pmo.Options = MQC.MQOO_INQUIRE | MQC.MQPMO_FAIL_IF_QUIESCING | MQC.MQPMO_SYNCPOINT;
                    MQMessage mqMessage = new MQMessage();
                    mqMessage.Write(System.Text.ASCIIEncoding.ASCII.GetBytes(message));
                    mqMessage.Format        = MQC.MQFMT_STRING;
                    mqMessage.MessageId     = System.Text.ASCIIEncoding.ASCII.GetBytes(messageId);
                    mqMessage.CorrelationId = System.Text.ASCIIEncoding.ASCII.GetBytes(correlationId);
                    queue.Put(mqMessage, pmo);


                    manager.Commit();
                    sentMessage = true;
                    LogUtil.logInfo("Sent message " + requestId + " to " + queueName);
                    LogUtil.logInfo("End SendMesage:");
                }
                catch (MQException e)
                {
                    sentMessage = false;
                    manager.Backout();
                    LogUtil.log("Error sending the message to  " + queue.Name + " queue", e);
                }
                return(sentMessage);
            }
        }
Exemple #3
0
        public void PutMessage(string destination, MQMessage message, MQPutMessageOptions putOptions)
        {
            Transaction currentTx = Transaction.Current;

            if (currentTx != null)
            {
                putOptions.Options |= MQC.MQPMO_SYNCPOINT;
                currentTx.EnlistVolatile(this, EnlistmentOptions.None);
            }

            try
            {
                QueueManager.Put(destination, message, putOptions);
            }
            catch (MQException mqe)
            {
                if (mqe.ReasonCode == MQC.MQRC_CONNECTION_BROKEN)
                {
                    // for some reason, the Close method on the Queue fails after
                    // a connection has been broken.

                    Queue = null;
                    QueueManager.Close();
                    QueueManager = null;
                }

                throw;
            }
        }
Exemple #4
0
        public string WriteMsg(string strInputMsg)
        {
            string strReturn = "";

            try
            {
                queue = queueManager.AccessQueue(QueueName,
                                                 MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
                message      = strInputMsg;
                queueMessage = new MQMessage();
                queueMessage.WriteString(message);
                queueMessage.Format    = MQC.MQFMT_STRING;
                queuePutMessageOptions = new MQPutMessageOptions();
                queue.Put(queueMessage, queuePutMessageOptions);
                strReturn = "Message sent to the queue successfully";
            }
            catch (MQException MQexp)
            {
                strReturn = "Exception: " + MQexp.Message;
            }
            catch (Exception exp)
            {
                strReturn = "Exception: " + exp.Message;
            }
            return(strReturn);
        }
Exemple #5
0
        public bool PutMessage(string queueName, string message)
        {
            bool    success = false;
            MQQueue queue   = null;

            try
            {
                _log.DebugFormat("Accessing queue {0}", queueName);
                queue = _queueManager.AccessQueue(queueName, MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
                MQMessage queueMessage = new MQMessage();
                queueMessage.CharacterSet = 1208;  // force to UTF-8 for InService
                queueMessage.WriteString(message);
                queueMessage.Format = MQC.MQFMT_STRING;
                MQPutMessageOptions queuePutMessageOptions = new MQPutMessageOptions();
                queue.Put(queueMessage, queuePutMessageOptions);

                success = true;
            }
            catch (MQException mqe)
            {
                success = false;
                _log.ErrorFormat("MQHelper::MQException caught: {0} - {1}", mqe.ReasonCode, mqe.Message);
            }
            finally
            {
                if (queue != null)
                {
                    _log.Debug("MQHelper::PutMessage() - Closing queue...");
                    queue.Close();
                }
            }
            return(success);
        }
Exemple #6
0
        string sendMessage(string message, string queueName)
        {
            try
            {
                queue = qMgr.AccessQueue(queueName, MQC.MQOO_OUTPUT | MQC.MQOO_INPUT_SHARED | MQC.MQOO_INQUIRE);
            }
            catch (MQException e)
            {
                return("打开队列失败:" + e.Message);
            }
            var mqMsg = new MQMessage();

            mqMsg.WriteString(message);
            var putOptions = new MQPutMessageOptions();

            try
            {
                queue.Put(mqMsg, putOptions);
                return("消息放置完毕");
            }
            catch (MQException mqe)
            {
                return("发送异常终止:" + mqe.Message);
            }
            finally
            {
                try
                {
                    qMgr.Disconnect();
                }
                catch (MQException e)
                {
                }
            }
        }
Exemple #7
0
        /// <summary>
        /// Puts a message object in the queue.
        /// </summary>
        /// <param name="queueName"></param>
        /// <param name="message"></param>
        private void PutRequestMessage(string connectionKeyName, MQMessage message)
        {
            MQQueue queue = null;

            try
            {
                if (!IsConnected)
                {
                    Connect(connectionKeyName);
                }

                MQPutMessageOptions queuePutMessageOptions = new MQPutMessageOptions();
                queue = _queueManager.AccessQueue(_activeConnection.RequestQueue, MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
                queue.Put(message, queuePutMessageOptions);
            }
            catch (MQException mqe)
            {
                _log.ErrorFormat("Exception in PutRequestMessage(). Message: {0}", mqe.Message);
            }
            finally
            {
                if (queue != null)
                {
                    queue.Close();
                }
            }
        }
Exemple #8
0
        /// <summary>
        ///     Helper method to write a message to an MQ Series queue
        /// </summary>
        /// <param name="queueManagerName">The name of the MQ Series queue manager</param>
        /// <param name="queueName">The name of the MQ Series queue to read from</param>
        /// <param name="message">The MQ Series queue</param>
        /// <param name="correlId">The correlation ID to be set on the new message</param>
        /// <param name="context">The BizUnit context object which holds state and is passed between test steps</param>
        public static void WriteMessage(string queueManagerName, string queueName, string message, byte[] correlId,
                                        Context context)
        {
            context.LogInfo("Opening queue manager: \"{0}\"", queueManagerName);
            using (var queueManager = new MQQueueManager(queueManagerName))
            {
                context.LogInfo("Opening queue: '{0}'.", queueName);
                using (var sendQueue = queueManager.AccessQueue(queueName, MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING)
                       )
                {
                    var mqMessage = new MQMessage();
                    var data      = ConvertToBytes(message);
                    mqMessage.Write(data);
                    mqMessage.Format = MQC.MQFMT_STRING;
                    var mqPutMsgOpts = new MQPutMessageOptions();

                    context.LogInfo("Writing {0} byte message to queue '{1}'.", data.Length, queueName);

                    if (correlId != null)
                    {
                        mqMessage.CorrelationId = correlId;
                    }

                    sendQueue.Put(mqMessage, mqPutMsgOpts);
                }
            }
        }
Exemple #9
0
        public bool PutMessage(string queueName, string message)
        {
            bool    success = false;
            MQQueue queue   = null;

            try
            {
                //eventLog1.WriteEntry("Accessing queue {0}", queueName);
                queue = _queueManager.AccessQueue(queueName, MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
                MQMessage queueMessage = new MQMessage();
                queueMessage.CharacterSet = 1208;  // force to UTF-8 for InService
                queueMessage.WriteString(message);
                queueMessage.Format = MQC.MQFMT_STRING;
                MQPutMessageOptions queuePutMessageOptions = new MQPutMessageOptions();
                queue.Put(queueMessage, queuePutMessageOptions);

                success = true;
            }
            catch (MQException mqe)
            {
                success = false;
                //eventLog1.WriteEntry("MQException caught: {0} - {1}", mqe.ReasonCode, mqe.Message);
                //throw new Exception(string.Format("Error writing to {0} queue", queueName));
            }
            finally
            {
                if (queue != null)
                {
                    //eventLog1.WriteEntry("Closing queue");
                    queue.Close();
                }
            }
            return(success);
        }
Exemple #10
0
        /// <summary>
        /// 发送
        /// </summary>
        /// <param name="queueName">队列名称</param>
        /// <param name="sendMessages">发送内容</param>
        public void SendMessages(string queueName, string sendMessages)
        {
            MQQueueManager sQMgr   = null; //发送消息的队列管理器
            MQQueue        remoteQ = null; //发送消息的队列

            try
            {
                // 创建一个连接到队列管理器
                sQMgr = new MQQueueManager(queueManagerName, ConnProperties);

                //现在指定要打开的队列,
                //和打开选项…
                remoteQ = sQMgr.AccessQueue(queueName, MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_INQUIRE);

                // 定义一个简单的WebSphere MQ消息
                MQMessage putMessage = new MQMessage();

                putMessage.WriteString(sendMessages);

                // 指定消息选项…
                MQPutMessageOptions pmo = new MQPutMessageOptions();

                // 放入消息到队列
                remoteQ.Put(putMessage, pmo);

                remoteQ.Close();    //关闭队列
                sQMgr.Disconnect(); //关闭队列管理器连接
            }
            catch
            {
            }
        }
        public static MQPutMessageOptions getPMOFromPara()
        {
            MQPutMessageOptions pmo = new MQPutMessageOptions();

            pmo.Options |= MQC.MQPMO_FAIL_IF_QUIESCING;
            return(pmo);
        }
        }// end of method

        /**
         * 将响应消息放入发送队列
         * @param para 连接实例
         * @param message 准备发送的消息
         * @param type
         * @return
         * @throws EisException
         */
        public static Boolean putMsgToQueue(MQCParameter para, MQMessage message)
        {
            MQPutMessageOptions pmo = getPMOFromPara();

            if (null == message || null == pmo || null == para)
            {
                throw new EisException(MQCException.MQ_MSG_SEND_PUTMSG_ERROR_EXCEPTION_CODE);
            }
            try {
                if (para.qManager == null || para.queue == null)
                {
                    connectMQExce(para, MQQueueAccesser.MQ_MSGSEND_TYPE);
                }

                printMsgId("before put MsgId", message.MessageId);
                LogUtil.Info("put message.replyToQueueManagerName:", message.ReplyToQueueManagerName);
                LogUtil.Info("put message.messageType:", message.MessageType);
                LogUtil.Info("put message.report:", message.Report);
                LogUtil.Info("message.encoding:", message.Encoding);
                LogUtil.Info("message.characterSet:", message.CharacterSet);
                LogUtil.Info("message.format:", message.Format);
                printMsgId("before put correlationId", message.CorrelationId);

                para.queue.Put(message, pmo);
                para.qManager.Commit();
                printMsgId("after put MsgId", message.MessageId);
                return(true);
            } catch (MQException mqe) {
                throw mqe;
            } finally {
                pmo = null;
            }
        }
        public void SendMQ(string xm)
        {
            string messageXML = xm;
            bool   sent       = false;
            int    tries      = 1;

            lock (sendLock) {
                try {
                    using (MQQueueManager queueManager = new MQQueueManager(qMgr, connectionParams)) {
                        var     openOptions = MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING;
                        MQQueue queue       = queueManager.AccessQueue(queueName, openOptions);
                        var     message     = new MQMessage {
                            CharacterSet = 1208 // UTF-8
                        };
                        message.WriteString(messageXML);
                        message.Format = MQC.MQFMT_STRING;
                        MQPutMessageOptions putOptions = new MQPutMessageOptions();
                        queue.Put(message, putOptions);
                        queue.Close();
                        sent = true;
                        logger.Trace($"===Message Sent to {queueName}");
                    }
                } catch (Exception ex) {
                    tries++;
                    logger.Info(ex.Message);
                    logger.Info("Error send MQ Message");
                }
                if (!sent)
                {
                    logger.Trace($"===Message NOT Sent to  {queueName}");
                }
            }
        }
Exemple #14
0
        public async Task <ExchangeMessage> SendMqStuff(ExchangeMessage xm)
        {
            await Task.Run(() => { });

            string messageXML = xm.payload;
            bool   sent       = false;
            int    tries      = 1;

            lock (sendLock)
            {
                do
                {
                    if (tries > maxRetry && maxRetry > 0)
                    {
                        xm.sent   = false;
                        xm.status = $"Exceeded Connection retries on MQ {queueName}";
                        return(xm);
                    }

                    try
                    {
                        using (MQQueueManager queueManager = new MQQueueManager(qMgr, connectionParams))
                        {
                            var     openOptions = MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING;
                            MQQueue queue       = queueManager.AccessQueue(queueName, openOptions);
                            var     message     = new MQMessage
                            {
                                CharacterSet = 1208 // UTF-8
                            };
                            message.WriteString(messageXML);
                            message.Format = MQC.MQFMT_STRING;
                            MQPutMessageOptions putOptions = new MQPutMessageOptions();
                            queue.Put(message, putOptions);
                            queue.Close();
                            sent = true;
                            logger.Trace($"===Message Sent {xm.uuid} to {queueName}");
                        }
                    }
                    catch (Exception ex)
                    {
                        if (!isLogger)
                        {
                            logger.Info("Unable to send message to : " + queueName + " : " + ex.Message);
                        }
                        tries++;
                    }
                    if (!sent)
                    {
                        logger.Trace($"===Message NOT Sent {xm.uuid} to  {queueName}");
                    }
                } while (!sent);
            }
            xm.sent   = true;
            xm.status = $"Sent to  MQ {queueName}";

            return(xm);
        }
Exemple #15
0
        public string WriteLocalQMsg(string strInputMsg, string strQueueName, int queueId, string ChannelInfo, string queueMgrName)
        {
            string strReturn = "";

            SendQueueName = strQueueName;

            MQQueueManager queueMgr;
            MQQueue        queue;

            if (queueId == 1)
            {
                queueMgr = queueManager1;
            }
            else
            {
                queueMgr = queueManager2;
            }

            try
            {
                if (queueMgr == null || queueMgr.IsConnected == false)
                {
                    ConnectMQ(queueMgrName, ChannelInfo, queueId);
                    //Reassign After Connection
                    if (queueId == 1)
                    {
                        queueMgr = queueManager1;
                    }
                    else
                    {
                        queueMgr = queueManager2;
                    }
                }

                queue = queueMgr.AccessQueue(SendQueueName,
                                             MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
                message                   = strInputMsg;
                queueMessage              = new MQMessage();
                queueMessage.Format       = MQC.MQFMT_STRING;
                queueMessage.CharacterSet = MQC.CODESET_850;
                queueMessage.Encoding     = MQC.MQENC_NATIVE;
                queueMessage.WriteString(message);
                queuePutMessageOptions = new MQPutMessageOptions();

                queue.Put(queueMessage, queuePutMessageOptions);
                strReturn = "Message sent to the queue successfully";
            }
            catch (MQException MQexp)
            {
                strReturn = "Exception: " + MQexp.Message;
            }
            catch (Exception exp)
            {
                strReturn = "Exception: " + exp.Message;
            }
            return(strReturn);
        }
        public MQPutMessageOptions NewMQPMO()
        {
            uint method = 0x2e6;

            this.TrEntry(method);
            MQPutMessageOptions result = new MQPutMessageOptions();

            base.TrExit(method, result);
            return(result);
        }
Exemple #17
0
        /// <summary>
        /// send a given queue message through the given queue
        /// </summary>
        /// <param name="queue"></param>
        /// <param name="qMessage"></param>
        /// <returns></returns>
        public bool SendMessage(MQQueue queue, MQMessage qMessage)
        {
            bool sentFlag = false;
            MQPutMessageOptions msgOptions = new MQPutMessageOptions();

            queue.Put(qMessage, msgOptions);
            sentFlag = true;

            return(sentFlag);
        }
Exemple #18
0
        public void PutMessageBlock(string messageContent)
        {
            var putMessageOptions = new MQPutMessageOptions();

            // add for transactions
            // putMessageOptions.Options += MQC.MQPMO_SYNCPOINT;
            PutMessage(messageContent, putMessageOptions);

            // commit transaction
        }
Exemple #19
0
        protected MQMessage[] Send(int command, PCFParameter[] parameters)
        {
            if (parameters == null)
            {
                throw new Exception("Must specify parameters!");
            }
            MQQueue   queue   = this.qMgr.AccessQueue("SYSTEM.DEFAULT.MODEL.QUEUE", 0x2021);
            MQMessage message = new MQMessage();

            message.ReplyToQueueName = queue.Name;
            message.MessageType      = 1;
            message.Feedback         = 0;
            message.Format           = "MQADMIN ";
            message.Report           = 0;
            MQCFH.Write(message, command, parameters.Length);
            for (int i = 0; i < parameters.Length; i++)
            {
                parameters[i].Write(message);
            }
            MQQueue             queue2 = this.qMgr.AccessQueue(this.qMgr.CommandInputQueueName, 0x2030);
            MQPutMessageOptions pmo    = new MQPutMessageOptions();

            pmo.Options = 0x40;
            queue2.Put(message, pmo);
            MQGetMessageOptions gmo = new MQGetMessageOptions();

            gmo.Options      = 0x2001;
            gmo.WaitInterval = this.waitInterval;
            gmo.MatchOptions = 2;
            ArrayList list     = new ArrayList();
            MQMessage message2 = null;
            int       compCode = 0;
            int       reason   = 0;
            int       num4     = 1;

            do
            {
                message2 = new MQMessage();
                message2.CorrelationId = message.MessageId;
                queue.Get(message2, gmo);
                message2.SkipBytes(20);
                num4     = message2.ReadInt4();
                compCode = message2.ReadInt4();
                reason   = message2.ReadInt4();
                message2.Seek(0);
                if (compCode != 0)
                {
                    throw new PCFException(compCode, reason);
                }
                list.Add(message2);
            }while (num4 == 0);
            queue2.Close();
            queue.Close();
            return((MQMessage[])list.ToArray(typeof(MQMessage)));
        }
Exemple #20
0
        public void SendFile(string filePath, string DesQueueName)
        {
            using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                byte[] buff     = new byte[FILE_SPLIT_LEN];
                var    fileName = System.IO.Path.GetFileName(filePath);
                var    queue    = queueManager.AccessQueue(DesQueueName,
                                                           MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);

                MQPutMessageOptions op = new MQPutMessageOptions();
                op.Options = op.Options + MQC.MQPMO_LOGICAL_ORDER;
                op.Options = op.Options + MQC.MQPMRF_GROUP_ID;

                int       count = -1;
                MQMessage msg   = new MQMessage();
                msg.MessageFlags  = MQC.MQMF_MSG_IN_GROUP;
                msg.MQMD.CorrelId = System.Text.Encoding.Default.GetBytes("000|21");

                bool isContainFileName = true;
                while (true)
                {
                    if (isContainFileName)
                    {
                        byte[]      headBytes  = System.Text.Encoding.Default.GetBytes(fileName + "|");
                        List <byte> totalBytes = new List <byte>();
                        totalBytes.AddRange(headBytes);
                        byte[] b         = new byte[FILE_SPLIT_LEN - headBytes.Length];
                        var    tempCount = fs.Read(b, 0, FILE_SPLIT_LEN - headBytes.Length);
                        count = tempCount + headBytes.Length;
                        totalBytes.AddRange(b);
                        msg.Write(totalBytes.ToArray(), 0, count);
                        isContainFileName = false;
                    }
                    else
                    {
                        count = fs.Read(buff, 0, FILE_SPLIT_LEN);
                        msg.Write(buff, 0, count);
                    }
                    if (count == 0)
                    {
                        break;
                    }
                    if (count < FILE_SPLIT_LEN)
                    {
                        msg.MessageFlags = MQC.MQMF_LAST_MSG_IN_GROUP;
                    }
                    queue.Put(msg, op);
                    msg.ClearMessage();
                }
                queue.Close();
                queueManager.Disconnect();
                LogMsg(string.Format("【SEND】\t【FILE】\t【{0}】\t【{1}】", DesQueueName, fileName));
            }
        }
Exemple #21
0
        public void Put(string queueName, MQMessage message)
        {
            MQQueue             mqQueue           = _mqQueueManager.AccessQueue(queueName, MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
            MQPutMessageOptions putMessageOptions = new MQPutMessageOptions();

            putMessageOptions.Options += MQC.MQGMO_SYNCPOINT;

            mqQueue.Put(message, putMessageOptions);

            mqQueue.Close();
        }
Exemple #22
0
        /// <summary>
        /// send the message to the MQSeries's queue
        /// </summary>
        /// <param name="m">a message object to be sent</param>

        public void Send(Message m)
        {
            //create a new MQSeries message
            MQMessage message = (MQMessage)queueSession.AccessMessage();

            message.WriteString(m.Content.ToString());
            MQPutMessageOptions messageOption = (MQPutMessageOptions)queueSession.AccessPutMessageOptions();

            //send the message to the MQSeries queue
            queue.Put(message, messageOption);
        }
Exemple #23
0
        private void PutAndGetMqSeries()
        {
            Hashtable connectionProperties = init(connectionType);

            // Create a connection to the queue manager using the connection
            // properties just defined
            MQQueueManager qMgr = new MQQueueManager(qManager, connectionProperties);

            // Set up the options on the queue we want to open
            int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT;

            // Now specify the queue that we want to open,and the open options
            MQQueue system_default_local_queue =
                qMgr.AccessQueue("SYSTEM.DEFAULT.LOCAL.QUEUE", openOptions);

            // Define an IBM MQ message, writing some text in UTF format
            MQMessage hello_world = new MQMessage();

            hello_world.WriteUTF("Hello World!");

            // Specify the message options
            MQPutMessageOptions pmo = new MQPutMessageOptions(); // accept the defaults,

            // same as MQPMO_DEFAULT

            // Put the message on the queue
            system_default_local_queue.Put(hello_world, pmo);

            // Get the message back again

            // First define an IBM MQ message buffer to receive the message
            MQMessage retrievedMessage = new MQMessage();

            retrievedMessage.MessageId = hello_world.MessageId;

            // Set the get message options
            MQGetMessageOptions gmo = new MQGetMessageOptions(); //accept the defaults

            //same as MQGMO_DEFAULT

            // Get the message off the queue
            system_default_local_queue.Get(retrievedMessage, gmo);

            // Prove we have the message by displaying the UTF message text
            String msgText = retrievedMessage.ReadUTF();

            Console.WriteLine("The message is: {0}", msgText);

            // Close the queue
            system_default_local_queue.Close();

            // Disconnect from the queue manager
            qMgr.Disconnect();
        }
Exemple #24
0
        /// <summary>
        /// Moves the given message to the configured error queue.
        /// </summary>
        /// <param name="m"></param>
        protected void MoveToErrorQueue(MQMessage m)
        {
            m.ApplicationIdData = m.ApplicationIdData +
                                  string.Format("<{0}>{1}</{0}>", FAILEDQUEUE, InputQueue);

            if (!string.IsNullOrEmpty(this.ErrorQueue))
            {
                MQPutMessageOptions queuePutMessageOptions = new MQPutMessageOptions();
                receiveResourceManager.PutMessage(ErrorQueue, m, queuePutMessageOptions);
            }
        }
Exemple #25
0
        public void OnNext(MQMessage value)
        {
            if (queue == null || queueManager == null || !queueManager.IsConnected || !queue.IsOpen)
            {
                queueManager = _mqQueueManagerFactory();
                queue        = queueManager.AccessQueue(_qname, MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT);
            }
            MQPutMessageOptions pmo = new MQPutMessageOptions();

            queue.Put(value, pmo);
        }
Exemple #26
0
        /// <summary>
        /// Sends reply to reply queue
        /// </summary>
        /// <param name="replyString"></param>
        /// <param name="msgId"></param>
        private void sendReply(String replyString, byte[] msgId)
        {
            MQMessage msgReply = new MQMessage();

            msgReply.WriteUTF(replyString);
            msgReply.CorrelationId = msgId;
            msgReply.Expiry        = 3000;
            MQPutMessageOptions mqPmo = new MQPutMessageOptions();

            mqPmo.Options |= MQC.MQPMO_SYNCPOINT;
            _mqReplyQueue.Put(msgReply, mqPmo);
        }
Exemple #27
0
        /// <summary>
        /// Puts a message in an MQ Queue using the user Id provided
        /// <param name="message">The message to be put in the queue</param>
        /// <returns>Response message</returns>
        /// </summary>
        public string PushMQRequestMessage(string message)
        {
            string location = "NBK.EAI.Adapters.MQAdapter.PushMQRequestMessage";

            try
            {
                MQMessage requestMessage = new MQMessage();

                requestMessage.Persistence = 0;

                requestMessage.ReplyToQueueName        = mqResponseQueueName;
                requestMessage.ReplyToQueueManagerName = mqQueueManagerName;

                requestMessage.Format       = MQC.MQFMT_STRING;
                requestMessage.CharacterSet = characterSet;
                requestMessage.MessageType  = MQC.MQMT_REQUEST;
                requestMessage.MessageId    = NBK.Common.Foundations.Utilities.ConversionUtilities
                                              .HexToBin(GenerateMQMsgId());


                MQPutMessageOptions pmo = new MQPutMessageOptions();
                pmo.Options = MQC.MQPMO_SET_IDENTITY_CONTEXT;

                requestMessage.WriteString(message);

                mqPutQueue.Put(requestMessage, pmo);

                string _msgId = NBK.Common.Foundations.Utilities.
                                ConversionUtilities.BinToHex(requestMessage.MessageId);

                NBK.Common.Foundations.Logging.LoggerHelper.Information
                    (location, "Sent MQ Meesage with MessageId : "
                    + _msgId);

                return(_msgId);
            }
            catch (MQException mqe)
            {
                // Close request Queue if still opened
                if (mqPutQueue.OpenStatus)
                {
                    mqPutQueue.Close();
                }
                // Close Queue manager if still opened
                if (mqQueueManager.OpenStatus)
                {
                    mqQueueManager.Close();
                }

                throw new MQAdapterException("Error Code: " +
                                             MQAdapterErrorReasons.GetMQFailureReasonErrorCode(mqe.Reason));
            }
        }
Exemple #28
0
        public void PutMessage(byte[] msg)
        {
            if (!isConnected)
            {
                Init();
            }
            mqMsg = new MQMessage();
            mqMsg.Write(msg);
            mqMsg.MessageType = MQC.MQMT_DATAGRAM;
            mqPutMsgOpts      = new MQPutMessageOptions();

            mqQueue.Put(mqMsg, mqPutMsgOpts);
        }
Exemple #29
0
        /// <summary>
        /// Convert from a TransportMessage to a MQMessage
        /// </summary>
        /// <param name="transportMessage"></param>
        /// <returns></returns>
        public MQMessage Convert(TransportMessage transportMessage)
        {
            MQMessage           queueMessage           = new MQMessage();
            MQPutMessageOptions queuePutMessageOptions = new MQPutMessageOptions();
            Stream messageStream = new MemoryStream();

            System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();

            if (transportMessage.Body == null && transportMessage.BodyStream != null)
            {
                messageStream = transportMessage.BodyStream;
            }
            else
            {
                // convert the message body to a stream
                this.messageSerializer.Serialize(transportMessage.Body, messageStream);
            }

            //write content to the message
            StreamReader sr = new StreamReader(messageStream);

            messageStream.Position = 0;
            queueMessage.WriteString(sr.ReadToEnd());
            queueMessage.Format = MQC.MQFMT_STRING;

            if (transportMessage.CorrelationId != null)
            {
                queueMessage.GroupId = encoding.GetBytes(transportMessage.CorrelationId);
            }

            //TODO Set the recoverable and response queue on the message being sent
            //toSend.Recoverable = m.Recoverable;
            //toSend.ResponseQueue = new MessageQueue(GetFullPath(m.ReturnAddress));
            queueMessage.ReplyToQueueName = transportMessage.ReturnAddress;
            FillApplicationIdData(queueMessage, transportMessage);

            //TODO Can we set the timeout on a message being sent?
            //if (m.TimeToBeReceived < MessageQueue.InfiniteTimeout)
            //    toSend.TimeToBeReceived = m.TimeToBeReceived;

            //TODO How can we pass header information on the message
            //if (m.Headers != null && m.Headers.Count > 0)
            //{
            //    MemoryStream stream = new MemoryStream();
            //    headerSerializer.Serialize(stream, m.Headers);
            //    toSend.Extension = stream.GetBuffer();
            //}

            return(queueMessage);
        }
Exemple #30
0
        //private void CheckConfiguration()
        //{
        //    string machine = GetMachineNameFromLogicalName(InputQueue);

        //    if (machine.ToLower() != Environment.MachineName.ToLower())
        //        throw new InvalidOperationException("Input queue must be on the same machine as this process.");
        //}

        //private void CreateQueuesIfNecessary()
        //{
        //    if (!DoNotCreateQueues)
        //    {
        //        string iq = GetFullPathWithoutPrefix(InputQueue);
        //        logger.Debug("Checking if input queue exists.");
        //        if (!MessageQueue.Exists(iq))
        //        {
        //            logger.Warn("Input queue " + InputQueue + " does not exist.");
        //            logger.Debug("Going to create input queue: " + InputQueue);

        //            MessageQueue.Create(iq, true);

        //            logger.Debug("Input queue created.");
        //        }

        //        if (!string.IsNullOrEmpty(ErrorQueue))
        //        {
        //            logger.Debug("Checking if error queue exists.");
        //            string errorMachine = GetMachineNameFromLogicalName(ErrorQueue);

        //            if (errorMachine != Environment.MachineName)
        //            {
        //                logger.Debug("Error queue is on remote machine.");
        //                logger.Debug("If this does not succeed (if the remote machine is disconnected), processing will continue.");
        //            }

        //            try
        //            {
        //                string eq = GetFullPathWithoutPrefix(ErrorQueue);
        //                if (!MessageQueue.Exists(eq))
        //                {
        //                    logger.Warn("Error queue " + ErrorQueue + " does not exist.");
        //                    logger.Debug("Going to create error queue: " + ErrorQueue);

        //                    MessageQueue.Create(eq, true);

        //                    logger.Debug("Error queue created.");
        //                }
        //            }
        //            catch (Exception ex)
        //            {
        //                logger.Error("Could not create error queue or check its existence. Processing will still continue.", ex);
        //            }
        //        }

        //    }
        //}

        #region Method: Send(mqMessage, destination)
        /// <summary>
        /// Send a constructed MQMessage to a specified destination
        /// </summary>
        /// <param name="queueMessage"></param>
        /// <param name="destination"></param>
        public void Send(MQMessage queueMessage, string destination)
        {
            // checked to make sure we didn't loose connection to the queue manager.
            // reconnect if we did lose connection.
            if (!sendResourceManager.IsConnected)
            {
                InitializeQueueManager(sendResourceManager);
                InitializeInputQueue(sendResourceManager);
            }

            MQPutMessageOptions queuePutMessageOptions = new MQPutMessageOptions();

            sendResourceManager.PutMessage(destination, queueMessage, queuePutMessageOptions);
        }
Exemple #31
0
        public string WriteMsg(string strInputMsg)
        {
            string strReturn = "";
            try
            {
                queue = queueManager.AccessQueue(QueueName,
                    MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);

                message = strInputMsg;
                queueMessage = new MQMessage();
                queueMessage.WriteBytes(strInputMsg);
                queueMessage.ReplyToQueueName = "MBK.SESION3.SALIDA";
                queueMessage.OriginalLength = 120;
                queueMessage.ReplyToQueueManagerName = "IB9QMGR";
                queueMessage.DataOffset = 328;
                queueMessage.Format = MQC.MQFMT_STRING;
                queuePutMessageOptions = new MQPutMessageOptions();



                try
                {
                    queue.Put(queueMessage, queuePutMessageOptions);
                    strReturn = "Message sent to the queue successfully";
                }
                catch (MQException e)
                {
                    strReturn = "Exception: " + "error al colocar(put) el mensaje en la cola " + QueueName + ". " + e.ToString();
                }

            }
            catch (MQException MQexp)
            {
                strReturn = "Exception: " + MQexp.Message;
            }
            catch (Exception exp)
            {
                strReturn = "Exception: " + exp.Message;
            }
            return strReturn;
        }
Exemple #32
0
        /// <summary>
        /// Write Message to Local Queue
        /// </summary>
        /// <param name="strInputMsg">Text Message</param>
        /// <param name="strqueueName">Queue Name</param>
        /// <returns></returns>
        public MQMessageStatus WriteLocalQMsg(string strInputMsg, string strQueueName)
        {
            MQMessageStatus messageStatus = new MQMessageStatus();
            string strReturn = string.Empty;
            SendQueueName = strQueueName;
            try
            {
                queue = queueManager.AccessQueue(SendQueueName,
                  MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
                message = strInputMsg;
                queueMessage = new MQMessage();
                queueMessage.WriteString(message);
                queueMessage.Format = MQC.MQFMT_STRING;
                queuePutMessageOptions = new MQPutMessageOptions();
                queue.Put(queueMessage, queuePutMessageOptions);
                strReturn = "Message sent to the queue successfully";

                messageStatus.Message = strReturn;
                messageStatus.Status = true;
            }
            catch (MQException MQexp)
            {
                strReturn = "Exception: " + MQexp.Message;
                messageStatus.Message = strReturn;
                messageStatus.Status = false;
            }
            catch (Exception exp)
            {
                strReturn = "Exception: " + exp.Message;
                messageStatus.Message = strReturn;
                messageStatus.Status = false;
            }
            return messageStatus;
        }
Exemple #33
0
		/// <summary>
		/// Helper method to write a message to an MQ Series queue
		/// </summary>
		/// 
		/// <param name="queueManagerName">The name of the MQ Series queue manager</param>
		/// <param name="queueName">The name of the MQ Series queue to read from</param>
		/// <param name="message">The MQ Series queue</param>
		/// <param name="correlId">The correlation ID to be set on the new message</param>
		/// <param name="context">The BizUnit context object which holds state and is passed between test steps</param>
		static public void WriteMessage(string queueManagerName, string queueName, string message, byte[] correlId, Context context)
		{
			MQQueueManager queueManager = null;
			MQQueue sendQueue = null;
			MQMessage mqMessage;
			MQPutMessageOptions mqPutMsgOpts;
			
			try
			{
				context.LogInfo("Opening queue manager: \"{0}\"", queueManagerName);
				queueManager = new MQQueueManager(queueManagerName);

				context.LogInfo("Opening queue: '{0}'.", queueName);
				sendQueue = queueManager.AccessQueue(queueName, MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING );
				
				mqMessage = new MQMessage();
				byte[] data = ConvertToBytes(message);
				mqMessage.Write(data);
				mqMessage.Format = MQC.MQFMT_STRING;
				mqPutMsgOpts = new MQPutMessageOptions();

				context.LogInfo("Writing {0} byte message to queue '{1}'.", data.Length, queueName);

				if (correlId != null)
				{
					mqMessage.CorrelationId = correlId;
				}
				
				sendQueue.Put( mqMessage, mqPutMsgOpts );
			}
			finally
			{
				if (sendQueue != null)
				{
					sendQueue.Close();
				}

				if (queueManager != null)
				{
					queueManager.Close();
				}
			}
		}
Exemple #34
0
        /// <summary>
        /// Puts a message in an MQ Queue using the user Id provided
        /// <param name="message">The message to be put in the queue</param>
        /// <returns>Response message</returns>
        /// </summary>
        public string postMQRequestMessage(string message)
        {
            try
            {
                MQMessage requestMessage = new MQMessage();

                requestMessage.Persistence = 0;

                requestMessage.ReplyToQueueName = mqRequestQueueName;
                requestMessage.ReplyToQueueManagerName = mqQueueManagerName;

                requestMessage.Format = MQC.MQFMT_STRING;
                requestMessage.CharacterSet = characterSet;
                requestMessage.MessageType = MQC.MQMT_REQUEST;
                requestMessage.MessageId = HexaDecimalUtility.ConvertToBinary(GenerateMQMsgId());
                requestMessage.CorrelationId = requestMessage.MessageId;

                MQPutMessageOptions pmo = new MQPutMessageOptions();
                pmo.Options = MQC.MQPMO_SET_IDENTITY_CONTEXT;

                requestMessage.WriteString(message);

                mqPutQueue.Put(requestMessage, pmo);

                string _msgId = BinaryUtility.ConvertToHexaDecimal(requestMessage.MessageId);

                return _msgId;

            }
            catch (MQException mqe)
            {
                // Close request Queue if still opened
                if(mqPutQueue.OpenStatus)
                    mqPutQueue.Close();
                // Close Queue manager if still opened
                if(mqQueueManager.OpenStatus)
                    mqQueueManager.Close();

                throw new MQAdapterException("Error Code: " +
                    MQAdapterErrorReasons.GetMQFailureReasonErrorCode(mqe.Reason));
            }
        }