是否有一个用于使用发布/订阅模式和WCF的框架/服务?

是否有一个用于使用发布/订阅模式和WCF的框架/服务?,wcf,msmq,publish-subscribe,Wcf,Msmq,Publish Subscribe,我的团队正在寻找分离系统各个组件的方法,以实现服务的解耦。我们想要实现的是一种事件驱动模式,其中服务订阅接收在其他系统中发生事件时发送的信息 由于我们已经在使用WCF进行请求-应答消息传递,因此我们希望继续将其用于此特定模式。理想情况下,这些消息将通过MSMQ进行管理,使我们能够使用可靠的消息传递,以便在出现服务故障时提供容错能力 我们不需要像跨服务边界的事务支持这样复杂的东西。实际上,我们只需要一个简单的基于订阅的消息分发系统。是否有任何简单的框架或服务可以帮助我们使用这种模式?最简单的可能是

我的团队正在寻找分离系统各个组件的方法,以实现服务的解耦。我们想要实现的是一种事件驱动模式,其中服务订阅接收在其他系统中发生事件时发送的信息

由于我们已经在使用WCF进行请求-应答消息传递,因此我们希望继续将其用于此特定模式。理想情况下,这些消息将通过MSMQ进行管理,使我们能够使用可靠的消息传递,以便在出现服务故障时提供容错能力


我们不需要像跨服务边界的事务支持这样复杂的东西。实际上,我们只需要一个简单的基于订阅的消息分发系统。是否有任何简单的框架或服务可以帮助我们使用这种模式?

最简单的可能是NServiceBus(http://www.nservicebus.com/PubSub.aspx)但这并不使用WCF

然而,从集成的角度来看,发送和接收消息要比web服务上的消息语义简单得多,所以您不需要WCF将其抽象出来

编辑:为了使用NetMsmqBinding启用此功能,您必须自己实现订阅基础结构。这也相当容易做到

您的发布者需要有一个数据库来存储订阅。当订阅服务器启动时,他们要做的第一件事就是向发布服务器发送订阅消息,发布服务器将订阅记录在订阅数据库中

订阅消息应包含:

  • 我感兴趣的消息类型
  • 我的队列地址
  • 然后,当您的发布者想要发布邮件时,它会检索订阅并计算每个订阅,以查看邮件是否与订阅匹配,并检索要发送到的地址。然后它只发送消息


    这是实现pub-sub的标准模式。

    在架构上,WCF在服务和绑定之间提供的抽象非常干净,如果可能的话,我希望我们继续使用它。不过这辆巴士看起来很整洁。您知道您是否可以直接使用subscribe组件并将发布留给本机MSMQ吗?我在上面用一种可能的模式扩展了我的答案,您可以使用它来实现这一点。对于您的评论,不,我不认为不使用订阅基础设施而不使用它的其余部分是可能的,尽管该项目是开源的,所以您可以随时尝试。