0

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

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

4

3 回答 3

0

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

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

于 2012-11-09T13:40:19.007 回答
0

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

于 2012-11-09T15:18:37.513 回答
0

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

通常,应该由订阅者来确定接收到的事件是否相关,但如果您确实有预先的信息,那么可以使用单独的订阅存储。

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

于 2012-11-12T04:53:47.087 回答