Java 基于主题的服务

Java 基于主题的服务,java,soa,esb,mule,Java,Soa,Esb,Mule,我正在寻求SOA/ESB专家对一些架构设计的帮助。如果问题不是很清楚,我会道歉 我们有几个业务案例,其中我们目前正在使用P2P通信或加载类似的代码块 if(...) Update System 1 Then Update System 2 Then Update System 3 Else If (...) Update System 1 in a

我正在寻求SOA/ESB专家对一些架构设计的帮助。如果问题不是很清楚,我会道歉

我们有几个业务案例,其中我们目前正在使用P2P通信或加载类似的代码块

       if(...)
               Update System 1
               Then Update System 2
               Then Update System 3
       Else If (...)
                Update System 1 in a different Way
                 Don't Update 2 at all
                 Update 3 but differently
现在到处都是锅炉板代码和数据库更新代码。有趣的是,我们从一个面向客户端的界面开始,然后不断添加更多的界面,并不断复制代码,以获得“快速胜利”。现在,当需要一个小小的改变时,它就变成了一项艰巨的任务

这是一个典型的ESB类型的案例,IMHO,我们正在考虑采用主题-发布-订阅模型来满足此类场景。这样,所有参与的客户端都可以将消息发布到某个主题,然后我们只需在任何需要的地方和任何时候与订阅者挂钩。所有数据库或系统更新代码都将是通用的,并将转到单个集群部署

然而,他说所有系统中的数据都应该更新。e、 g.如果1个订阅服务器中的更新失败,我们应该在其他系统中回滚更新,或者至少在更新失败的地方进行审计。 实现上述目标的最佳方法是什么?是否有我们可以使用的标准工具/实用程序

仅供参考-我们正在使用Java技术和Mule ESB,并希望充分利用其潜力。
提前谢谢。请务必让我知道是否需要更清晰的信息

使用主题是将服务联系在一起的一种非常有效的方法。这就是我所说的模式。当您应确保主题设计应传达事件和上下文时,因为根据上下文的不同,同一事件可能需要路由到不同的收件人(因此主题可能看起来像context.evetnType和subscriber可以订阅类型(*.eventType)的所有事件,或仅在特定上下文中订阅)

请注意,从服务外部化此行为的另一个替代方法是使用。编排使得查看和监控预定义的业务流程变得更加容易,但代价是意外发现和一些灵活性(与saga相比)。它还可以鼓励