我是一名从事信息系统集成(SOA,ESB,消息代理等)的程序员。
目前我正在开发一个专有的ESB,遗憾的是它没有实现Scatter-Gather pattern。
实际上,我会对一种异步实现这种模式的解决方案感兴趣。在this example中的含义,最佳报价不在与报价请求相同的同步事务中进行管理(例如,不是同步请求/回复服务)。
因为我们正在讨论异步处理,所以我正在寻找可靠的解决方案。例如,如果供应商B发生故障(由于技术问题),我不想发回错误报价请求。我必须将整个事务视为有保证的事务,并且能够在一个时间点重新处理对供应商B的调用。然后交易将神奇地继续,我将能够发回成功的报价请求。
过去,我已经能够使用专有的复杂事件处理(CEP)工具实现此模式。实际上,CEP工具能够持久保存全局事务状态并关联从供应商A,B和C返回的事件。
所以我想知道是否有一个现有的轻量级解决方案以可靠的方式实现这种模式。
最后但并非最不重要的是,我不搜索另一个ESB工具。我知道Apache Camel,Spring Integration,Mule或WSO2正在实现这种模式,但我对专用解决方案很感兴趣。
由于
答案 0 :(得分:0)
您的要求分为两大类。事件关联/过滤通常使用CEP引擎完成,而像Scatter-Gather这样的集成模式将通过ESB完成。确实,CEP引擎将促进某种程度的消息转换和集成功能,而ESB也将支持事件的基本过滤/关联(主要是事件处理而不是复杂的事件处理),但这些并不是它们最初设计的目的。
因此,如果无法使用ESB或CEP服务器之一实现,则您的解决方案可以包括CEP和ESB服务器,每个服务器都执行一些最适合的特定任务。 (构建组合服务器的供应商不太可能执行所有这些工作)
话虽如此,如果您要使用WSO2产品实现此功能,并且如果您确实需要单个服务器实例,则可以考虑按照in this doc所述在ESB之上安装CEP功能。否则,您可以使用Thrift等高性能协议连接这两台服务器。