延迟调用消息队列?

时间:2012-05-26 21:19:10

标签: c# msmq

我有一个现有的应用程序,它通过排队的传输将消息从一个进程发送到另一个进程。我想通过在处理消息时给出延迟来改变消息的处理方式,并让队列更像是优先级队列,并且应该首先在队列顶部执行操作。

IE:

在时间0,消息A被发送到队列,延迟时间为15分钟。 5分钟后消息B被发送到队列,延迟10分钟。 处理队列的服务然后崩溃并且不再重启15分钟。 当队列再次开始处理时,消息B将位于顶部,然后是消息A.

C#/ MSMQ / .NET生态系统中有这样的东西吗?

1 个答案:

答案 0 :(得分:1)

如果您在Windows Azure上进行云编程,有一种方法可以解决这个问题。只需指定visibilitytimeout放置消息。

来自http://msdn.microsoft.com/en-us/library/windowsazure/dd179346.aspx

  

visibilitytimeout =

     

可选。如果指定,则必须使用x-ms-version of 2011-08-18或更高版本进行请求。如果未指定,则默认值为0.指定相对于服务器时间的新可见性超时值(以秒为单位)。新值必须大于或等于0,且不能大于7天。消息的可见性超时不能设置为晚于到期时间的值。 visibilitytimeout应设置为小于生存时间值的值。

     

可选的可见性超时指定消息不可见的时间。超时到期后,该消息将变为可见。如果未指定可见性超时,则使用默认值0。