我正在测试我编写的一些软件。测试通过WCF将消息排入MSMQ,速度比我的软件可以出列并处理它们的速度快。这应该不是问题,因为那是MSMQ的预期目的,但是如果我将足够的消息排入其处理我的软件超过24小时的处理位置,那么这些消息将被移动到“ Transactional dead-letter messages “排队并将其类设置为”已接收的时间已过去“。
我能找到的唯一可配置的是绑定本身:
<bindings>
<netMsmqBinding>
<binding timeToLive="7.00:00:00" /> <!-- 7 days -->
...
我在排队和出队时都使用这种绑定,而且似乎没有这个技巧。将值设置为2秒确实有效,但将其设置为超过1天(包括其最大值(24天))则不会。
还有另一种延长这个待接收时间窗口的方法吗?我找不到任何其他配置(发送消息或创建队列时)。
答案 0 :(得分:2)
绑定本身的 timeToLive 属性实际上是唯一可配置的必需属性。我回过头来看看我所有的配置,显然错过了一个地方。来自“编程WCF服务”:
仅限TimeToLive属性 与发布客户有关,和 对服务方面没有影响,也没有 服务可以改变它吗?传输TimeToLive 默认为一天。
我现在整个周末都在进行测试,进行了1,000,000条消息。在死信队列中还没有结束。
答案 1 :(得分:0)
我不是100%肯定,但我相信TimeToLive属性只设置Time-To-Reach-Queue msmq属性,但我现在还不知道设置时间的内置方式 - 待收到的财产......