繁体   English   中英

使用IIS托管的WCF服务实现“传奇超时”?

[英]Implementing a “saga timeout” using an IIS-hosted WCF service?

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

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

我知道我可以在广播消息上设置消息到期时间,以便端点不会浪费时间进行不必要的工作,但是触发早期发布又如何呢?

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

是否可以仅使用WCF和MSMQ来实现长时间运行的批处理超时操作?

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

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

在我看来,这听起来像是一项NServiceBus的工作,而这正是NServiceBus开箱即用(甚至更多)提供的东西。 我会再看一遍。 业务一直在变化,我们意识到传奇更普遍。 现在可能是一项要求,但是很快可能会再次发生变化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM