这是一个简单的问题,但我找不到答案。假设我的消息被放置到重试队列中(谁创建了重试队列?是WCF还是MSMQ服务?),5分钟后(这是我的重试延迟),该消息将返回应用程序队列。问题是:超时后谁将消息从重试队列移动到应用程序队列?额外的问题是:延迟是如何跟踪的?消息是否获得“移动”时间戳和“重试”时间戳?
标准的 msmq 绑定(netMsmqBinding 和 msmqIntegrationBinding)不支持重试。所以回答你的问题:
谁创建了重试队列? - 你自己。
在超时后,谁将消息从重试队列移动到应用程序队列中? - 你自己。
如何跟踪延迟? - 你必须自己做。
NServiceBus 是开源的,可以使用 MSMQ 进行传输。该产品提供了开箱即用的重试功能,但不使用 WCF。
更新
以上内容适用于 MSMQ 3 及以下版本。
因此,似乎实际的移动是由 WCF 处理的,而 MSMQ 简单地现在具有支持毒消息和重试处理的设施。