如何监控SOA环境中与中介的通信



我正在寻找一种使用中介来监视SOA环境中所有消息的可能性,中介将被设计为对消息的结构和序列执行不同的规则集(例如,假设它将检查并确保服务a必须在B之前被消费)。

显然,我想到的第一个想法是ws - addressing在这里可能会有什么帮助,但我不确定它是否有帮助,因为我真的没有看到任何机制来确保消息将通过给定的中介传递(就像在WS-Routing中一样,这是微软过时的专有协议)。

或者甚至可能有一种不同的方法,监视器不会是路由的一部分,但会在请求/响应时得到通知,这可能会再次使主动执行规则变得更加困难。

你可以通过拦截每个服务中的所有调用作为基本服务主机的一部分来实现"服务防火墙"。或者,你也可以使用第三方解决方案,并将你所有的服务调用路由给他们(他们会拦截,然后将调用转发给你的服务)。

您可以使用esb来进行路由(和拦截),或者您可以使用专用的解决方案,如IBM的datapower,来自Layer7的XML防火墙等。

对于我的所有(技术)服务,我使用消息传递和命令处理程序模式,我在这里描述,但实际上没有调用模式名称。我发送消息,框架找到实现与我的消息对应的接口的相应类。我可以创建多个类来处理我的消息,也可以创建一个类来处理大量消息。在本文中这些是实现IHandleMessages接口的类。

无论哪种方式,只要我可以创建多个实现此接口的类,并且它们都被调用,我就可以轻松地添加审计,而无需将此逻辑添加到业务逻辑或任何东西中。只需为每条消息添加一个额外的实现,或者增强框架,使其也接受IHandleMessages实现。这个类可以审计每一条消息并集中存储它们。

这样做之后,您可以找到关于消息和流的更多信息。例如,如果您在WCF/MSMQ消息的头信息中放入它的来源,也许是单个消息的一些唯一标识符,那么您可以跟踪各种组件的流。

NServiceBus也有这种审计功能,团队正在为此开发额外的工具,称为ServiceInsight。

相关内容

  • 没有找到相关文章

最新更新