我正在嘗試從MessageQueue中讀取最新的消息。我知道我可以使用GetAllMessages()。然後循環。但是,當隊列中有大量消息時,它會很慢。有一個更好的方法嗎?如何閱讀MessageQueue中的最後一條消息
感謝
我正在嘗試從MessageQueue中讀取最新的消息。我知道我可以使用GetAllMessages()。然後循環。但是,當隊列中有大量消息時,它會很慢。有一個更好的方法嗎?如何閱讀MessageQueue中的最後一條消息
感謝
假設對性能的影響是通過消息循環: 有通過所有的郵件無須循環,如果你想要的是最後一個。由於GetAllMessages()返回一個Message類型的數組,只需按索引轉到數組中的最後一個元素。
在MSMQ 3中有一項功能,可能是您正在尋找的功能。 ReceiveByLookupId方法可以獲取隊列中的最後一條消息。
http://msdn.microsoft.com/en-us/library/3w50th9h.aspx
你可以使用下面的操作:
MessageLookupAction.Last:接收隊列中的最後一條消息,並從 隊列中刪除。 lookupId參數必須設置爲0.
如果您使用的是早期版本的MSMQ,則可能必須使用Peek,類似於本博文的解釋如何獲取消息隊列的計數。當你到達最後一個時,你可以接收ReceiveById。
http://jopinblog.wordpress.com/2008/03/12/counting-messages-in-an-msmq-messagequeue-from-c/