持久订阅

时间:2012-02-16 08:16:14

标签: c# wcf msmq

我正在考虑改变我们现有的基于事件的定期同步,并试图找到一些已经存在的机制,但到目前为止失败了,所以你们中的一些人可能会有所帮助。 我将尝试解释我认为它是如何工作的,如果有人知道这已经在某处已经完成,请给我指点。 所以系统看起来像这样:

enter image description here

现在 - 有趣的部分:
- 我需要订阅客户端即使在他离线时生成这些事件也会收到事件 - 但是某些客户的缺席不应阻止其他客户接收事件。

示例是电子邮件:我可以向多个收件人发送电子邮件,我可以向相同的收件人发送第二封电子邮件,而无需等到每个人都会读取第一个收件人,并且每个收件人都会收到所有电子邮件,即使他们不在线此刻,如果电子邮件服务器出现故障,也没有人会丢失电子邮件。

问题是WCF开箱即用支持这个,如果是的话,怎么看这样的配置呢? 如果WCF不支持这个,是否有任何开源项目可以处理这种情况?

1 个答案:

答案 0 :(得分:1)

WCF不支持开箱即用。您可以使用WCF构建pub-sub模式,Juval Lowy在2006中讨论过此问题,或者您可以使用netMsmqBinding自行推出。

然而,有一个开源框架位于MSMQ之上,名为NServiceBus,启动和运行起来非常快。但是,这不使用WCF。

<强>更新

顺便说一句 - 上面提供的订阅设计在我看来很脆弱,因为它看起来像是集中了整个系统的订阅管理/存储。更好的是分布式订阅管理模型:

enter image description here