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; }
public void Connect(string queueManagerName) { try { _mqQueueManager = new IBM.WMQ.MQQueueManager(queueManagerName); } catch(Exception ex) { throw new Exception(string.Format("Connect(): {0}, {1}", queueManagerName, ex.ToString()); } }
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); } } }