BizTalk交易 - 原子/长期运行

时间:2015-09-11 06:17:12

标签: biztalk atomic transactionscope biztalk-2010

我需要一些关于BizTalk Atomic和Long Running事务的实际使用的输入。我已经阅读了所有理论,但不确定如果我进行多个SQL调用,并且如果某些SQL调用失败了以前提交的事务/数据将如何回滚,那么Atomic事务将如何工作。

需要一些指南/链接/指针来更好地理解交易。

使用的BizTalk版本:2010

2 个答案:

答案 0 :(得分:1)

主要区别在于,即使将数据发送到消息框,在原子事务处理期间也不会保持编排 - 所有操作都将在DTC建立的一个事务中完成。实际上,如果您从Atomic事务发送消息,则消息实际上并未发送到MB - 它已写入但未提交。 另一个区别是Atomic事务会在发生故障时自动回滚内部的所有内容。因此,您可以确定所有内部操作都是立即完成或根本不执行。

实际上,Atomic事务有太多的限制和非常奇特的方式来做BizTalk中的事情。我已经用BizTalk实现了很多解决方案,但到目前为止从未使用过Atomic事务。但是我使用很多Long Running强制编排持久化某些中间状态(发生在任何事务范围的末尾)或定义补偿操作。

答案 1 :(得分:1)

请参阅此博客Indetail About Atomic Scope / Transactions in BizTalk Server

特别是:

  

请注意,BizTalk与原子事务的范围仅限于BizTalk Server Message Box。在您决定使用原子范围之前请考虑这一点。

因此,对于多个SQL事务,除非您不依赖于第一个SQL调用的结果,否则我认为您不能以原子形状执行此操作。如果您想要一个可以回滚的SQL事务,那么最好在BizTalk调用的存储过程中执行此操作。

关于我使用Atomic范围的唯一时间是必须从Orchestration内部调用Pipeline或调用BRE。