我使用 IIS 托管的 Web 服务 (WCF) 作为请求处理程序(广播)和聚合器实现了一个相当简单的分散-收集模式。
NetMsmqBinding
使用标准的单向消息合约和 WAS,一切都运行得非常顺利。但是现在我们想引入一个业务规则,聚合器只会等待一定的时间(可能是几天)来获得最终响应;如果部分或全部没有收到,它应该关闭该批次并发布它拥有的任何信息。通常它只会在所有端点都报告后才会启动发布。
我知道我可以在广播消息上设置消息过期,这样端点就不会浪费时间做不必要的工作,但是触发提前发布呢?
NServiceBus 将sagas视为一等公民,优雅地处理超时,而且我知道 BizTalk 实际上将整个分散收集实现为单个编排。但我不想仅仅为了这一要求而部署任何新工具或服务。
有没有办法只使用 WCF 和 MSMQ 来实现长时间运行的批处理超时操作?
(再一次 - 聚合器托管在 IIS 中,所以我不能只设置一个计时器;应用程序池可以随时回收或关闭。)