【问题标题】:MSMQ WCF, time to be receivedMSMQ WCF,接收时间
【发布时间】:2012-04-22 10:31:52
【问题描述】:

在使用 MSMQ WCF 客户端和服务器时如何设置消息 timeToBeRecieved?

我正在使用 msmq 服务来管理与不可靠目标系统的消息传递。消息可能会持续数天未送达。

大多数无效消息使用服务器绑定中的以下设置进入毒队列。

receiveErrorHandling="Move"

一些消息最终进入系统死信队列而不是中毒队列。有没有办法配置死信消息进入与上述相同的队列?该队列是实际消息队列的子队列,称为 queue;poison。

如何将 timeToBeReceived 设置为足够大的值,以使邮件最终进入中毒队列?我希望每种消息类型都有一个失败队列,我也不想处理死信。

谢谢

【问题讨论】:

  • “我也不想处理死信。”您应该始终处理死信队列。即使它是一个监视它的线程,它也不会填满。
  • 我不希望一个队列用于消息处理,然后多个队列用于错误处理。这对我来说似乎很荒谬。我想要一个队列用于消息,一个队列用于失败。也许我应该试试 nservicebus?
  • MSMQ 死信队列实际上是基本包的一部分。为 WCF 支持引入的子队列实际上只是一个过滤器,因为它们在目标队列中对消息进行排序。

标签: wcf error-handling msmq


【解决方案1】:

可以在绑定的配置文件中设置值:

<bindings>
  <netMsmqBinding>
    <binding timeToLive="[define your timespan here]" />
    <!-- more configuration -->
  </netMsmqBinding>
</bindings>
...

【讨论】:

  • 这是客户端设置还是服务器设置?
  • @Jim:视情况而定。您应该在那些将发送消息的地方进行定义。据我所知,这与传输的接收端无关。
  • 接收端不应对消息进行任何更改,因此需要在发送应用程序中设置或作为发送方的全局设置。
  • 这样就可以了。我会安排足够长的时间以确保消息得到处理。
猜你喜欢
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多