2012-11-09 54 views
0

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

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

回答

0

默认情况下,端点预订所有消息。如果您只想要某些端点订阅特定集合,那么您需要将您的端点配置为DoNotAutoSubscribe()。然后,您必须明确订阅端点将使用Bus.Subscribe()感兴趣的每种消息类型。

0

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

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

0

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

通常应由用户决定是否收到的事件是相关的,但如果你预先有信息,然后可以与单独的订阅存储。

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