WCF / MSMQ“已接收时间已过”死信队列问题

时间:2009-11-18 13:18:37

标签: wcf msmq

我正在测试我编写的一些软件。测试通过WCF将消息排入MSMQ,速度比我的软件可以出列并处理它们的速度快。这应该不是问题,因为那是MSMQ的预期目的,但是如果我将足够的消息排入其处理我的软件超过24小时的处理位置,那么这些消息将被移动到“ Transactional dead-letter messages “排队并将其类设置为”已接收的时间已过去“。

我能找到的唯一可配置的是绑定本身:

<bindings>
  <netMsmqBinding>
    <binding timeToLive="7.00:00:00" /> <!-- 7 days -->
...

我在排队和出队时都使用这种绑定,而且似乎没有这个技巧。将值设置为2秒确实有效,但将其设置为超过1天(包括其最大值(24天))则不会。

还有另一种延长这个待接收时间窗口的方法吗?我找不到任何其他配置(发送消息或创建队列时)。

2 个答案:

答案 0 :(得分:2)

绑定本身的 timeToLive 属性实际上是唯一可配置的必需属性。我回过头来看看我所有的配置,显然错过了一个地方。来自“编程WCF服务”:

  

仅限TimeToLive属性   与发布客户有关,和   对服务方面没有影响,也没有   服务可以改变它吗?传输TimeToLive   默认为一天。

我现在整个周末都在进行测试,进行了1,000,000条消息。在死信队列中还没有结束。

答案 1 :(得分:0)

我不是100%肯定,但我相信TimeToLive属性只设置Time-To-Reach-Queue msmq属性,但我现在还不知道设置时间的内置方式 - 待收到的财产......