2010-06-08 189 views
5

我们正试图找到一个优雅的解决方案,用于报告基础架构中的系统生成的异常,比查看电子邮件或检查日志文件更容易操作。服务总线上的发布/订阅模式可以很好地解决这个问题。服务将发布错误/事件,并且子订阅者可以使用简单模式匹配来过滤这些消息。NServiceBus发布/订阅

我们已经调查NServiceBus项目,并想知道它是否会达到我们的要求,着眼于PubSub的样品(http://docs.particular.net/samples/pubsub/),我们注意到它并没有解决以下两种情况:

  1. 所有出版商发布相同的消息类型
  2. 订户不应该要求出版商端点

我们已经设法实现这些要求的知识,但我们不确定是否配置COR RECT。以下是我们的解决方案:

  1. 所有发布共享相同的订阅存储配置(DBSubscriptionStorage),这是因为在文档http://docs.particular.net/nservicebus/messaging/publish-subscribe/

  2. 所有发布/订户的订阅存储部分中所描述的共享数据库配置为使用nservicebus网站文档中描述的分配器。

我们想知道这是否是正确执行NServiceBus的发布/订阅模式,或者是否有可能是另一种解决办法,acheive我们的目标是什么?

回答

2

这一问题已经在这里讨论小组讨论:

http://nservicebus.grouply.com/message/7059

总之,你必须在每个节点发送而不是发布到一个终端。

希望有所帮助。

+0

感谢您的回复,IBus.Publish和IBus.Send之间的根本区别是什么? – Matt 2010-06-09 21:50:40

+0

忽略我们的错误情况一分钟,也许考虑一个订单处理系统,其中一组服务正在发布他们已经处理的订单的通知。如果我们打算从多个发布者向多个订阅者发布相同订单通知消息,那么共享订阅存储是否是正确的实现。当用户订阅我们的消息时,订阅被添加到共享存储器中,并且该特定消息的所有发布者开始向我们的订阅者发布。这似乎工作,但它是正确的? – Matt 2010-06-09 21:51:28

+3

马特 - 我认为你将多个*物理*发布节点与多个*逻辑*发布服务结合在一起。NServiceBus强制执行单个逻辑发布服务,但在该服务中允许使用任意数量的物理节点(在生产配置文件中自动设置,手动执行此操作即可使用DbSubscriptionStorage)。 此外,IBus.Publish用于传达已经发生*的事件,而Send用于请求我们想要发生的事情(但可能会被拒绝)。事件不能被拒绝(因为它们已经发生)。 – 2010-06-13 08:38:49

0

您可以将消息写入Windows事件日志并使用OpManger等工具来监视日志中的错误/警告。

OpManager可以监控进程,网络端口,因此可以检测到其他故障。它还支持电子邮件警报,并有一个不错的WebUI。