如何阅读MessageQueue中的最后一条消息

时间:2012-01-04 17:24:56

标签: c#-4.0

我正在尝试从最新的消息开始阅读MessageQueue中的消息。我知道我可以使用GetAllMessages()。然后循环。但是当队列中有大量消息时它很慢。有一个更好的方法吗?

由于

3 个答案:

答案 0 :(得分:1)

在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/

答案 1 :(得分:0)

假设性能影响在循环中消息: 如果您想要的只是最后一条消息,则无需遍历所有消息。由于GetAllMessages()返回Message类型的数组,因此只需按索引转到数组中的最后一个元素。

答案 2 :(得分:0)

public void btnLogin_Clicked(object sender, System.EventArgs e)