我目前正在开发一个SOA项目。
我必须开发几个处理链,也就是说用Java连接ESB中的Web服务的Web服务。
由于每个链接的Web服务都会抛出不同的异常,因此我考虑使用Transactions来回滚Web服务行为。
但是,当每个服务都不同时,我不知道在SOA环境中这是否可行。我搜索了一下,发现了一些关于AtomicTransactions的信息,但我不确定它是否可以用来解决我的问题。
总而言之,我的问题是它实际上可以回滚服务吗?如果是这样,我该如何设置呢?
提前致谢。
答案 0 :(得分:9)
使用服务之间的事务不是一个好习惯,因为你为不一定值得信赖的组件提供资源,而且服务进程通常是长期运行的(我在“transactional-integration anti-pattern”中写了更多内容。
正如评论中提到的那样,我发现“saga pattern”是处理这些长时间交互的更好方式
答案 1 :(得分:0)
我发现整个想法充其量只是坏事。 SOA和事务一直是一个令人头疼的问题。 倡导一组服务的反向行动,也可能失败!那你会做什么?
我知道英国一家声誉卓着的媒体公司,有一个专门的离岸团队,由于网络服务的编排故障导致数据按摩,令人难以置信。
最后,使用OEM BPM引擎作为协调器,我认为可能有依赖于工作单元概念的能力。然而,这个话题一直是令人惊讶的问题。