持久订阅

问题描述:

我想改变我们现有的定期同步与基于事件,并试图找到一些机制已经存在,但到目前为止还没有,所以可能你会有些帮助。 我会尽力解释我认为它可以工作,如果有人知道这是已经完成的地方,请给我指点。 所以系统应该是这样的:持久订阅

enter image description here

现在 - 有趣的部分:
- 我需要订阅的客户将收到的事件,即使当他是离线生成的那些事件,
- 但没有的某些客户端不应该阻止其他客户端的事件接收。

例子就是电子邮件:我可以发送电子邮件给多个收件人,我可以发送第二封邮件给同一收件人无需等待,直到每个人都会读出第一位的,每个收件人将收到的所有电子邮件,即使他们不在线此刻,如果电子邮件服务器出现故障,没有人会丢失电子邮件。

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

WCF不支持此开箱。您可使用WCF发布 - 订阅模式,朱瓦尔·洛谈到这2006或者你可以使用netMsmqBinding滚你自己。

但是有一个开源框架,它坐落在MSMQ之上称为NServiceBus这是非常快的启动和运行。但是这不使用WCF。

UPDATE

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

enter image description here

+0

我检查NServiceBus - 它的确我需要的一切。关于集中订阅存储 - 我认为管理起来会更容易,如果发行商/订阅者会有单点,那不是BizTalk正在做什么? – Giedrius 2012-02-16 16:13:20

+1

您说得对,BizTalk集中订阅。但是,Microsoft建议群集包含订阅管理数据的BizTalk消息框数据库。这样你就可以说数据是分布式的。 – 2012-02-16 16:18:35