public override void Execute(Context context) { MemoryStream msgData = null; var queuePath = QueuePath; var timeout = TimeOut; try { var queue = new MessageQueue(MSMQHelper.DeNormalizeQueueName(queuePath)); // Receive msg from queue... if (BodyType != VarEnum.VT_EMPTY) { queue.Formatter = new ActiveXMessageFormatter(); } var msg = queue.Receive(TimeSpan.FromMilliseconds(timeout), MessageQueueTransactionType.Single); if (msg == null) { throw new Exception("No message read!"); } // Dump msg content to console... msgData = StreamHelper.LoadMemoryStream(msg.BodyStream); StreamHelper.WriteStreamToConsole("MSMQ message data", msgData, context); // Validate data... msgData.Seek(0, SeekOrigin.Begin); // Check it against the validate steps to see if it matches one of them foreach (var subStep in SubSteps) { try { // Try the validation and catch the exception var strm = subStep.Execute(msgData, context); } catch (Exception ex) { context.LogException(ex); throw; } } ProcessContextProperties(context, ContextProperties, msg); } finally { if (null != msgData) { msgData.Close(); } } }
public override void Execute(Context context) { var queuePath = QueuePath; var timeout = TimeOut; var queue = new MessageQueue(MSMQHelper.DeNormalizeQueueName(queuePath)); var c = queue.CreateCursor(); // Count msgs in queue... var numberOfMessages = 0; var msg = PeekWithTimeout(queue, timeout, c, PeekAction.Current); if (null != msg) { numberOfMessages = 1; while ((msg = PeekWithoutTimeout(queue, c, PeekAction.Next)) != null) { numberOfMessages++; // Dump msg content to console... var msgData = StreamHelper.LoadMemoryStream(msg.BodyStream); StreamHelper.WriteStreamToConsole("MSMQ message data", msgData, context); msgData.Close(); } } context.LogInfo("Number of messages found: {0}, in queue '{1}'", numberOfMessages, QueuePath); switch (ExpectedNumberOfMessages) { case -1: break; default: if (ExpectedNumberOfMessages != numberOfMessages) { throw new Exception(String.Format("Queue contained: {0} messages, but the step expected: {1} messages", numberOfMessages, ExpectedNumberOfMessages)); } break; } }