2

我使用 IIS 托管的 Web 服务 (WCF) 作为请求处理程序(广播)和聚合器实现了一个相当简单的分散-收集模式。

NetMsmqBinding使用标准的单向消息合约和 WAS,一切都运行得非常顺利。但是现在我们想引入一个业务规则,聚合器只会等待一定的时间(可能是几天)来获得最终响应;如果部分或全部没有收到,它应该关闭该批次并发布它拥有的任何信息。通常它只会在所有端点都报告后才会启动发布。

我知道我可以在广播消息上设置消息过期,这样端点就不会浪费时间做不必要的工作,但是触发提前发布呢?

NServiceBus 将sagas视为一等公民,优雅地处理超时,而且我知道 BizTalk 实际上将整个分散收集实现为单个编排。但我不想仅仅为了这一要求而部署任何新工具或服务。

有没有办法只使用 WCF 和 MSMQ 来实现长时间运行的批处理超时操作?

(再一次 - 聚合器托管在 IIS 中,所以我不能只设置一个计时器;应用程序池可以随时回收或关闭。)

4

1 回答 1

0

您可以实现自己的,但是您需要找到一种方法来管理每个请求实例的超时,在每个实例等待每个供应商的响应时管理每个实例的状态,关联响应,并引入一个发布/订阅架构,用于将聚合器与供应商分离,以便您可以处理他们发布的事件。

在我看来,这听起来像是一项非常多的工作,并且正是NServiceBus开箱即用的东西类型(还有更多)。我会再看看它。企业总是在变化,我们意识到传奇更常见。现在这可能是一项要求,但很快就会再次改变。

于 2011-07-28T01:52:43.637 回答