NServiceBus在多系统环境中发布

时间:2012-11-09 11:10:59

标签: nservicebus

我在一个系统中工作,我们在多个国家/地区拥有相同的网站。这些网站中的每一个都有自己的服务。一切都运作良好,但我总是发现自己必须发送消息而不是发布消息作为消息,否则我之前知道的其他服务是完全无关紧要的。对我发布许多服务然后过滤它的相关性听起来毫无意义。

当想要将消息发布到某个服务子集时,我是否应该处理这种做法,其他人如何处理这个问题呢?

3 个答案:

答案 0 :(得分:0)

您能描述一下确定特定端点系统相关性的逻辑吗?发布和订阅的目的是系统中有其他端点可以订阅的事件 你不应该对你的订阅者有所了解。那么你如何确定相关性?

如果这些消息与特定端点无关,您为什么要订阅这些消息?

答案 1 :(得分:0)

默认情况下,端点订阅所有邮件。如果只希望某些端点订阅特定集,则需要将端点配置为DoNotAutoSubscribe()。然后,您必须使用Bus.Subscribe()显式订阅端点将感兴趣的每种消息类型。

答案 2 :(得分:0)

如果它确实是一个事件消息,那么您需要发布消息。如果您需要发布到一个子集,您可以拥有一个单独的订阅存储,该端点将使用该端点。

通常应该由订户决定接收的事件是否相关,但如果您预先获得信息,则可以使用单独的订阅商店。

在我的FOSS ESB项目(http://shuttle.codeplex.com/)中,必须向ESB提供ISubscriptionManager实现,以确定用户uris将已发布的消息发送到。虽然可能过度,但可以提供一个自定义实现,其中包含一些执行过滤的逻辑;否则是单独的订阅商店。