private void GetMessageContentIntoString( ref IBM.WMQ.MQMessage mqMessage, ref string messageContentAsString ) { byte[] messageContentAsByteArray = null; getMessageContentIntoByteArray( ref mqMessage, ref messageContentAsByteArray ); messageContentAsString = Utils.byteArrayToString( ref messageContentAsByteArray ); }
public void PutMessageWithNoSyncPoint( ref string queueName, ref IBM.WMQ.MQMessage mqMessage ) { if( false == _existingQueues.ContainsKey( queueName ) ) return; try { IBM.WMQ.MQPutMessageOptions mqPutMessageOptions = new IBM.WMQ.MQPutMessageOptions(); mqPutMessageOptions.Options|= IBM.WMQ.MQC.MQPMO_NO_SYNCPOINT; IBM.WMQ.MQQueue queue = (IBM.WMQ.MQQueue) _existingQueues[ queueName ]; queue.Put( mqMessage, mqPutMessageOptions ); } // some nasty error 1 catch( IBM.WMQ.MQException mqException ) { String errorMessage = mqException.ToString(); throw new Exception( errorMessage, mqException ); } // some nasty error 2 catch( Exception exception ) { String errorMessage = exception.ToString(); throw new Exception( errorMessage, exception ); } }
public void PutMessageWithNoSyncPoint( ref string queuName, ref byte[] messageContent ) { IBM.WMQ.MQMessage mqMessage = new IBM.WMQ.MQMessage(); mqMessage.Write( messageContent ); putMessageWithNoSyncPoint( ref queuName, ref mqMessage ); }
public void GetMessageWithSyncPoint( ref string queuName, ref byte[] messageContent, int timeOut ) { IBM.WMQ.MQMessage mqMessage = null; getMessageWithSyncPoint( ref queuName, ref mqMessage, timeOut ); messageContent = mqMessage.ReadBytes( mqMessage.DataLength ); }
public static byte[] ReadBytesEx(this IBM.WMQ.MQMessage message) { var result = message.ReadBytes(message.MessageLength); message.Seek(0); return(result); }
public void GetMessageWithSyncPoint( ref string queuName, ref string messageContent, int timeOut ) { IBM.WMQ.MQMessage mqMessage = null; getMessageWithSyncPoint( ref queuName, ref mqMessage, timeOut ); byte[] messageContentAsByteArray = mqMessage.ReadBytes( mqMessage.DataLength ); messageContent = Utils.byteArrayToString( ref messageContentAsByteArray ); }
public static IBM.WMQ.MQMessageDescriptor GetDescriptor(this IBM.WMQ.MQMessage message) { if (_fiMqmd == null) { _fiMqmd = typeof(IBM.WMQ.MQMessage).GetField("md", BindingFlags.NonPublic | BindingFlags.Instance); } return((IBM.WMQ.MQMessageDescriptor)_fiMqmd.GetValue(message)); }
public static string ReadStringEx(this IBM.WMQ.MQMessage message) { try { var srcEncoding = WsUtils.GetEncoding(message.CharacterSet); var bytes = message.ReadBytes(message.MessageLength); message.Seek(0); var str = Encoding.Convert(srcEncoding, Encoding.UTF8, bytes); return(Encoding.UTF8.GetString(str)); } catch (Exception) { // fallback option... var result = message.ReadString(message.MessageLength); message.Seek(0); return(result); } }
public override bool Execute() { Log.LogMessage("Starting Websphere MQ Server " + QueueManagerName); IBM.WMQ.MQQueueManager queueManager = new IBM.WMQ.MQQueueManager(QueueManagerName); Log.LogMessage("Opening queue " + InputQueueName); IBM.WMQ.MQQueue queue = queueManager.AccessQueue(InputQueueName, IBM.WMQ.MQC.MQOO_INPUT_SHARED); int count = 0; while (true) { try { IBM.WMQ.MQMessage msg = new IBM.WMQ.MQMessage(); queue.Get(msg); MemoryStream ms = new MemoryStream(); MemoryStream respStream = new MemoryStream(); MQUtil.MQMessageToStream(msg, ms); msg.ClearMessage(); StreamUtil.ProcessClientBigRequest(ConnString, ms, respStream, false, null); MQUtil.StreamToMQMessage(respStream, msg); queueManager.Put(OutputQueueName, msg); queueManager.Commit(); msg.ClearMessage(); count++; Log.LogMessage("Processed " + count.ToString()); } catch (IBM.WMQ.MQException ex) { if (ex.ReasonCode != IBM.WMQ.MQC.MQRC_NO_MSG_AVAILABLE) throw; else Thread.Sleep(50); } } }
public void DeleteMessageWithSyncPoint( ref string queueName, ref byte[] corelationId ) { if( false == _existingQueues.ContainsKey( queueName ) ) return; try { IBM.WMQ.MQGetMessageOptions mqGetMessageOptions = new IBM.WMQ.MQGetMessageOptions(); mqGetMessageOptions.Options|= IBM.WMQ.MQC.MQGMO_SYNCPOINT; mqGetMessageOptions.Options|= IBM.WMQ.MQC.MQGMO_WAIT; mqGetMessageOptions.WaitInterval = 1000; mqGetMessageOptions.Options|= IBM.WMQ.MQC.MQMO_MATCH_CORREL_ID; IBM.WMQ.MQMessage mqMessage = new IBM.WMQ.MQMessage(); mqMessage.CorrelationId = corelationId; IBM.WMQ.MQQueue queue = (IBM.WMQ.MQQueue) _existingQueues[ queueName ]; queue.Get( mqMessage, mqGetMessageOptions ); } catch( IBM.WMQ.MQException mqException ) // some nasty error 1 { string errorMessage = mqException.ToString(); if( 2033 == mqException.ReasonCode ) // there is no message on the queue throw new MqNoMessageException( errorMessage ); else { errorMessage = String.Format ( "getMessageWithSyncPoint(): reasonCode={0}, details={1}", mqException.ReasonCode, mqException.ToString() ); throw new Exception( errorMessage ); } } catch( Exception exception ) // some nasty error 2 { throw new Exception( exception ); } }
private void GetMessageContentIntoByteArray( ref IBM.WMQ.MQMessage mqMessage, ref byte[] messageContentAsByteArray ) { messageContentAsByteArray = mqMessage.ReadBytes( mqMessage.DataLength ); }
public void GetMessageWithSyncPoint(ref string queuName, ref IBM.WMQ.MQMessage mqMessage) { const int c_timeOut = 1000; getMessageWithSyncPoint( ref queuName, ref mqMessage, c_timeOut ); }
public override bool Execute() { Stopwatch watch = new Stopwatch(); watch.Start(); Log.LogMessage("Starting Websphere MQ transfer with " + TotalBatches.ToString() + " batchs with " + BatchSize.ToString() + " items each"); queueManager = new IBM.WMQ.MQQueueManager(QueueManagerName); messageCount = TotalBatches; inputQueue = queueManager.AccessQueue(InputQueueName, IBM.WMQ.MQC.MQOO_INPUT_SHARED); Thread t = new Thread(ProcessMQQueue); t.Start(); int count = 1; for (int i = 0; i < TotalBatches; i++) { IBM.WMQ.MQMessage msg = new IBM.WMQ.MQMessage(); MemoryStream ms = new MemoryStream(); StreamUtil.GenerateBigRequest(ms, false, count, count + (BatchSize - 1)); MQUtil.StreamToMQMessage(ms, msg); queueManager.Put(OutputQueueName, msg); count += BatchSize; Log.LogMessage("Sent " + count.ToString()); } while (!finished) Thread.Sleep(250); watch.Stop(); Log.LogMessage("Total processing time: " + watch.Elapsed.TotalSeconds.ToString("0.00") + " seconds"); return true; }
private void ProcessMQQueue() { bool keepListening = true; while (keepListening) { try { IBM.WMQ.MQMessage msg = new IBM.WMQ.MQMessage(); inputQueue.Get(msg); queueManager.Commit(); messageCount--; MemoryStream ms = new MemoryStream(); MQUtil.MQMessageToStream(msg, ms); msg.ClearMessage(); Log.LogMessage("Waiting for more " + messageCount.ToString()); StreamUtil.ImportarStream(ConnString, ms); if (messageCount <= 0) { keepListening = false; finished = true; } } catch (IBM.WMQ.MQException exception) { if (exception.ReasonCode != IBM.WMQ.MQC.MQRC_NO_MSG_AVAILABLE) throw; else Thread.Sleep(100); } } }