问题
Is there is any option to remove a message from MSMQ after it has been read?
Like, a receive + delete can run as atomic operation?
回答1:
It sounds like you want to peek at the next message and then receive it after you're finished processing.
Message message = Queue.Peek();
Queue.ReceiveById(message.Id);
回答2:
Are you referring to the difference between Receive and Peek in MSMQ?
IMO the simplest mechanism to ensure atomic operations is to place the queue operations within a TransactionScope. This can be done with WCF like so.
http://msdn.microsoft.com/en-us/library/ms789032.aspx
来源:https://stackoverflow.com/questions/11988572/msmq-receive-and-delete