我有一个有代理的ESB(Aqualogic)。
此代理将调用3个不同的服务,我必须将这3个服务放在事务范围内......
ESB不支持交易...
有人知道任何解决方案吗?
答案 0 :(得分:1)
我对Aqualogic并不熟悉,但总的来说我可以说你想做的事情非常非常困难。
如果Aqualogic使用MSMQ进行传输,那么您可以通过使用事务性队列来获得某种形式的事务支持。但那只是一个开始。
如果要将WCF服务与事务上下文集成,则需要设置对WS-Atomic协议的支持(请参阅http://msdn.microsoft.com/en-us/library/ms729784.aspx和http://social.msdn.microsoft.com/Forums/en/wcf/thread/cae32545-6536-4631-b89f-54f55da62199)。这是一个严重的痛苦。
不仅要配置它,还要使用它。跨服务器使用WS-Atomic意味着您需要在所有计算机上激活MSDTC,并且这些MSDTC之间的协调非常缓慢且容易长时间超时。
最好不要期望在单个事务中运行所有内容,而是使用工作流来补偿操作的部分成功/部分失败。另请参阅http://msdn.microsoft.com/en-us/library/dd483319.aspx以获取示例。