【问题标题】:Delayed Invocation of a Message Queue?消息队列的延迟调用?
【发布时间】:2012-05-31 22:16:21
【问题描述】:

我有一个现有的应用程序,它通过排队传输将消息从一个进程发送到另一个进程。我想通过延迟处理消息来改变消息的处理方式,并让队列更多地充当优先级队列,其中应首先在队列顶部处理消息。

IE:

在时间 0,消息 A 延迟 15 分钟发送到队列。 5 分钟后,消息 B 发送到队列,延迟 10 分钟。 处理队列的服务随后崩溃并且在 15 分钟内没有重新启动。 当队列再次开始处理时,消息 B 将在顶部,然后是消息 A。

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

【问题讨论】:

  • MSMQ 消息在发送时可以被赋予优先级,在接收时优先。 stackoverflow.com/questions/1310414/…
  • Erm 如果没有崩溃,会先处理消息 A 吗?
  • 我不只是想要一个优先级,我基本上想做一个模拟。此消息在 30 分钟内不会被处理,如果没有其他更高优先级的消息可用,则不会立即处理。

标签: c# msmq


【解决方案1】:

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

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

可见性超时=

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

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

【讨论】:

    猜你喜欢
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多