我的团队正在寻找将系统的各个组件分离为分离服务的方法。我们想要实现的是一种事件驱动模式,其中服务订阅接收在其他系统中发生事件时发送的信息。
由于我们已经将WCF用于请求 - 回复消息传递,因此我们希望继续将其用于此特定模式。理想情况下,消息将通过MSMQ进行管理,以使我们能够使用可靠的消息传递,以便在服务失败时为我们提供容错功能。
我们不会寻找任何复杂的事情,例如跨服务边界的事务支持。实际上,我们只需要一个简单的基于订阅的消息调度系统。是否有任何简单的框架或服务可以帮助我们适应这种模式?
答案 0 :(得分:3)
最简单的可能是NServiceBus(http://www.nservicebus.com/PubSub.aspx),但这不使用WCF。
但是从集成的角度来看,发送和接收消息比Web服务上的消息传递语义简单得多,因此您不需要WCF来抽象它。
编辑:为了使用NetMsmqBinding启用此功能,您必须自己实现订阅基础结构。这样做也很容易。
您的发布商需要有一个数据库来存储订阅。当您的订户启动时,他们所做的第一件事就是向发布者发送订阅消息,发布者将订阅记录在订阅数据库中。
订阅消息应包含:
然后,当您的发布者想要发布消息时,它会检索订阅并评估每个订阅以查看消息是否与订阅匹配并检索要发送到的地址。然后它只是发送消息。
这是实现pub sub的标准模式。