当前位置: 首页>>代码示例>>C#>>正文


C# MessageQueue.ReceiveById方法代码示例

本文整理汇总了C#中System.Messaging.MessageQueue.ReceiveById方法的典型用法代码示例。如果您正苦于以下问题:C# MessageQueue.ReceiveById方法的具体用法?C# MessageQueue.ReceiveById怎么用?C# MessageQueue.ReceiveById使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Messaging.MessageQueue的用法示例。


在下文中一共展示了MessageQueue.ReceiveById方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ReturnMessageToSourceQueue

 public static void ReturnMessageToSourceQueue(string errorQueueMachine, string errorQueueName, string msmqMessageId)
 {
     string path = string.Format(@"{0}\private$\{1}", errorQueueMachine, errorQueueName);
     MessageQueue errorQueue = new MessageQueue(path);
     {
         MessagePropertyFilter messageReadPropertyFilter = new MessagePropertyFilter
         {
             Body = true,
             TimeToBeReceived = true,
             Recoverable = true,
             Id = true,
             ResponseQueue = true,
             CorrelationId = true,
             Extension = true,
             AppSpecific = true,
             LookupId = true,
         };
         errorQueue.MessageReadPropertyFilter = messageReadPropertyFilter;
         using (TransactionScope scope = new TransactionScope())
         {
             MessageQueueTransactionType transactionType = MessageQueueTransactionType.Automatic;
             Message message = errorQueue.ReceiveById(msmqMessageId, TimeSpan.FromSeconds(5), transactionType);
             string fullPath = ReadFailedQueueHeader(message);
             using (MessageQueue failedQueue = new MessageQueue(fullPath))
             {
                 failedQueue.Send(message, transactionType);
             }
             scope.Complete();
         }
     }
 }
开发者ID:vanwyngardenk,项目名称:docs.particular.net,代码行数:31,代码来源:ErrorQueue.cs

示例2: receiveByID

        public object receiveByID(string MessageID, string InputQueue)
        {
            // Open existing queue
            using (MessageQueue queue = new MessageQueue(InputQueue))
            {
                //Peek to find message with the MessageID in the label
                while (true)
                {
                    Message[] peekedmessage = queue.GetAllMessages();
                    foreach (Message m in peekedmessage)
                    {
                        if (m.Label.StartsWith(MessageID))
                        {
                            using (Message message = queue.ReceiveById(m.Id))
                            {
                                RequestGuid = MessageID;
                                // Gets object type from the message label
                                Type objType = Type.GetType(message.Label.Split('|')[1], true, true);

                                // Derializes object from the stream
                                DataContractSerializer serializer = new DataContractSerializer(objType);
                                return serializer.ReadObject(message.BodyStream);
                            }
                        }
                    }
                    System.Threading.Thread.Sleep(10);
                }
            }
        }
开发者ID:NickABoen,项目名称:CIS526_TeamProjects,代码行数:29,代码来源:ObjectMessageQueue.cs

示例3: DeleteMessage

        public void DeleteMessage(ref GlobalVariables oVar, string FormatType, string MSMQServer, string QueueName, string MessageId,string MessageLabel)
        {
            string MQPath = FormatType + MSMQServer + "\\" + QueueName;
            try
            {
                MessageQueue oMQueue = new MessageQueue(MQPath);
                try
                {

                    oMQueue.ReceiveById(MessageId);
                    oVar.sStatusMessage = " Message succesfully deleted";
                    //MessageBox.Show(MessageLabel + " Message succesfully deleted",
                     //       "Message Queuing Admin", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message,
                        "Message Queuing Admin", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    //MessageBox.Show(ex + "Queue Name is not valid or exist");
                    oVar.sStatusMessage = ex.Message;
                }
                oMQueue.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message,
                    "Message Queuing Admin", MessageBoxButtons.OK, MessageBoxIcon.Information);
                oVar.sStatusMessage = ex.Message;
            }
        }
开发者ID:ramonsmits,项目名称:qexplorer,代码行数:30,代码来源:MSMQXplorer.cs

示例4: MoveMessage

        static void MoveMessage(Message message, string destinationQueueName, bool leaveCopyInSourceQueue)
        {
            var sourceQueuePath = message.QueuePath;
            var destinationQueuePath = MsmqUtil.GetFullPath(destinationQueueName);

            using (var transaction = new MessageQueueTransaction())
            {
                transaction.Begin();
                try
                {
                    var sourceQueue = new MessageQueue(sourceQueuePath) {MessageReadPropertyFilter = DefaultFilter()};
                    var destinationQueue = new MessageQueue(destinationQueuePath);

                    var msmqMessage = sourceQueue.ReceiveById(message.Id, transaction);
                    destinationQueue.Send(msmqMessage, transaction);

                    if (leaveCopyInSourceQueue)
                    {
                        sourceQueue.Send(msmqMessage, transaction);
                    }

                    transaction.Commit();
                }
                catch
                {
                    transaction.Abort();
                    throw;
                }
            }

            Messenger.Default.Send(new MessageMoved(message, sourceQueuePath, destinationQueuePath, leaveCopyInSourceQueue));
        }
开发者ID:skinny,项目名称:Rebus,代码行数:32,代码来源:MsmqInteraction.cs

示例5: GetMessageFromQueue

		public override void GetMessageFromQueue(string messageId, MessageQueue queue, Action<Message> processMethod)
		{
			using (var transaction = new MessageQueueTransaction())
			{
				transaction.Begin();
				Logger.DebugFormat("Transaction for {0} started.", messageId);

				Message message;
				try
				{
					message = queue.ReceiveById(messageId, TimeSpan.FromSeconds(30), transaction);
					Logger.DebugFormat("Message with id {0} received.", messageId);
				}
				catch (Exception ex)
				{
					transaction.Abort();
					Logger.Error(
						string.Concat("Failed to receive message with id ", messageId, "transactions aborted.")
						, ex);
					return;
				}

				if (message != null)
				{
					processMethod(message);
				}

				if (transaction.Status != MessageQueueTransactionStatus.Aborted)
					transaction.Commit();
			}
		}
开发者ID:mickednk,项目名称:MightyLittle.MQ,代码行数:31,代码来源:TransactionalReceive.cs

示例6: MoveTimeoutToMainQueue

 /// <summary>
 /// Moves the message from the timeout queue to the main queue.
 /// </summary>
 /// <param name="queue">The queue.</param>
 /// <param name="messageId">The message id.</param>
 public void MoveTimeoutToMainQueue(MessageQueue queue, string messageId)
 {
     using (var destinationQueue = new MessageQueue(GetTimeoutQueuePath(), QueueAccessMode.Receive))
     {
         var message = destinationQueue.ReceiveById(messageId, queue.GetTransactionType());
         message.AppSpecific = 0;//reset timeout flag
         queue.Send(message, destinationQueue.GetTransactionType());
     }
 }
开发者ID:brumschlag,项目名称:rhino-tools,代码行数:14,代码来源:FlatQueueStrategy.cs

示例7: MoveTimeoutToMainQueue

 /// <summary>
 /// Moves the message from the timeout queue to the main queue.
 /// </summary>
 /// <param name="queue">The queue.</param>
 /// <param name="messageId">The message id.</param>
 public void MoveTimeoutToMainQueue(MessageQueue queue, string messageId)
 {
     var fullSubQueueName = queue.Path + ";timeout";
     using (var timeoutQueue = new MessageQueue(fullSubQueueName, QueueAccessMode.Receive))
     {
         var message = timeoutQueue.ReceiveById(messageId, queue.GetTransactionType());
         message.AppSpecific = 0;//reset timeout flag
         queue.Send(message, queue.GetTransactionType());
     }
 }
开发者ID:brumschlag,项目名称:rhino-tools,代码行数:15,代码来源:SubQueueStrategy.cs

示例8: ClearSubscriptionStorage

		private static void ClearSubscriptionStorage(string subscriptionStorageQueue, string pluginInputQueue)
		{
			var fullName = MsmqUtilities.GetFullPathWithoutPrefix(subscriptionStorageQueue);
			if (!MessageQueue.Exists(fullName)) return;

			var queue = new MessageQueue(fullName);
			foreach (var message in queue.GetAllMessages())
			{
				if (message.Label.ToLower().Contains(pluginInputQueue.ToLower()))
				{
					queue.ReceiveById(message.Id);
				}
			}
			Console.WriteLine("SubscriptionStorage queue {0} successfully cleared", subscriptionStorageQueue);
		}
开发者ID:lakshithagit,项目名称:Target-Process-Plugins,代码行数:15,代码来源:Program.cs

示例9: Main

 static void Main(string[] args)
 {
     MessageQueue myQueue = new MessageQueue(".\\myQueue");
     //var mes = myQueue.Receive(new TimeSpan(0, 0, 3));
     var timeout = TimeSpan.FromSeconds(1);
     MessageEnumerator msgs = myQueue.GetMessageEnumerator2();
     while (msgs.MoveNext(timeout))
     {
         using (var message = myQueue.ReceiveById(msgs.Current.Id, timeout))
         {
             message.Formatter = new XmlMessageFormatter(new String[] { "System.String,mscorlib" });
             string m = message.Body.ToString();
             Console.WriteLine(m);
         }
     }
 }
开发者ID:xavierchen2015,项目名称:MQTest,代码行数:16,代码来源:Program.cs

示例10: DeleteMessage

        void DeleteMessage(Message message)
        {
            using (var queue = new MessageQueue(message.QueuePath))
            using (var transaction = new MessageQueueTransaction())
            {
                transaction.Begin();
                try
                {
                    queue.ReceiveById(message.Id, transaction);

                    transaction.Commit();
                }
                catch
                {
                    transaction.Abort();
                    throw;
                }
            }

            Messenger.Default.Send(new MessageDeleted(message));
        }
开发者ID:rasmuskl,项目名称:Rebus,代码行数:21,代码来源:MsmqInteraction.cs

示例11: GetMessageFromQueue

		public override void GetMessageFromQueue(string messageId, MessageQueue queue, Action<Message> processMethod)
		{
			Message message;
			try
			{
				message = queue.ReceiveById(messageId, TimeSpan.FromSeconds(30));
				Logger.DebugFormat("Message with id {0} received.", messageId);
			}
			catch (Exception ex)
			{
				Logger.Error(
					string.Concat("Failed to receive message with id ", messageId)
					, ex);
				return;
			}

			if (message != null)
			{
				processMethod(message);
			}
		}
开发者ID:mickednk,项目名称:MightyLittle.MQ,代码行数:21,代码来源:NonTransactionalReceive.cs

示例12: Init

        private void Init(Address queue)
        {
            var path = MsmqUtilities.GetFullPath(queue);

            var mq = new MessageQueue(path);

            if (!mq.Transactional)
                throw new Exception("Queue must be transactional.");

            storageQueue = mq;

            storageQueue.Formatter = new XmlMessageFormatter(new[] {typeof (TimeoutData)});

            storageQueue.GetAllMessages().ToList().ForEach(
                m =>
                   {
                       var td = m.Body as TimeoutData;
                       if (td == null) //get rid of message
                           storageQueue.ReceiveById(m.Id, MessageQueueTransactionType.Single);
                       else //put into lookup
                           sagaToMessageIdLookup[td.SagaId] = m.Id;
                   });
        }
开发者ID:rsummer,项目名称:NServiceBus,代码行数:23,代码来源:TimeoutPersister.cs

示例13: RemoveMessageFromQueue

        public static void RemoveMessageFromQueue(string queuePath, string messageId, out string errorMessage)
        {
            // Define default errorMessage
            errorMessage = null;

            // Connect to the a queue on the local computer.
            var myQueue = new MessageQueue(queuePath)
            {
                Formatter = new BinaryMessageFormatter()
            };

            try
            {
                myQueue.ReceiveById(messageId);
            }
            catch (MessageQueueException e)
            {
                if (e.MessageQueueErrorCode != MessageQueueErrorCode.IOTimeout)
                {
                    errorMessage = e.Message;
                }
            }

        }
开发者ID:MarioQueiros,项目名称:RememberVinilWebStore,代码行数:24,代码来源:MessageQueueHelper.cs

示例14: VerifyMessage

 private static void VerifyMessage(MessageQueue q, Message m)
 {
     var request = m.Body as GetFriendsRequest;
     if (request != null && ShouldCancel(request.UserName))
     {
         // this removes the message from the queue,
         // and (apparently) doesn't mess up the queue cursor...
         try
         {
             q.ReceiveById(m.Id, new TimeSpan(0, 0, 30));
         }
         catch(Exception)
         {
             Console.WriteLine("Failed to receive (delete) message for " + request);
         }
     }
 }
开发者ID:trasa,项目名称:TwitDegrees,代码行数:17,代码来源:Program.cs

示例15: Competing_consumers

        public void Competing_consumers()
        {
            queue.Send("a");

            var peek1 = queue.Peek();

            using (var q2 = new MessageQueue(testQueuePath, QueueAccessMode.Receive))
            {
                var peek2 = q2.Peek();
                q2.ReceiveById(peek2.Id);
            }

            Assert.Throws<InvalidOperationException>(()=>queue.ReceiveById(peek1.Id))
            ;
        }
开发者ID:brumschlag,项目名称:rhino-tools,代码行数:15,代码来源:MsmqTests.cs


注:本文中的System.Messaging.MessageQueue.ReceiveById方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。