Transactions 在Mule中,非事务性出站如何与事务性入站一起工作

Transactions 在Mule中,非事务性出站如何与事务性入站一起工作,transactions,mule,Transactions,Mule,在主题下的Mule文档中有一个神秘的段落 Mule可以管理非事务性出站连接器。默认情况下,来自非事务性传输的出站连接器忽略活动事务,而不是拒绝它。换句话说,此类连接器的默认事务操作不再是“无”。下面的示例代码说明了这种行为。Mule以同步和事务方式处理从VM队列接收的消息。代码示例中的文件传输不是事务性的,因此,写入文件不是事务的一部分。但是,如果消息在Mule创建文件时抛出异常,Mule将回滚事务并重新处理该消息。这个示例实际上是一个多资源事务 下面这句话是什么意思,是打字错误(不再是无)?如

在主题下的Mule文档中有一个神秘的段落

Mule可以管理非事务性出站连接器。默认情况下,来自非事务性传输的出站连接器忽略活动事务,而不是拒绝它。换句话说,此类连接器的默认事务操作不再是“无”。下面的示例代码说明了这种行为。Mule以同步和事务方式处理从VM队列接收的消息。代码示例中的文件传输不是事务性的,因此,写入文件不是事务的一部分。但是,如果消息在Mule创建文件时抛出异常,Mule将回滚事务并重新处理该消息。这个示例实际上是一个多资源事务

下面这句话是什么意思,是打字错误(不再是无)?如果没有,那么什么是事务操作

换句话说,此类连接器的默认事务操作不再是NONE

此外,如果写入文件不是事务的一部分,那么如果文件写入失败,如何回滚事务???

这不是打字错误

以前,它通常是
NONE
,因此事务是独立于非事务性出站交互的结果来解决的。现在,事务未被解析,即非事务出站端点不提交或回滚当前事务


回滚之所以发生,是因为抛出了异常,将事务标记为要回滚。当流终止时,将解析当前事务。如果已标记为回滚,则将回滚,否则将提交。

以上文本解释了“最后一次资源博弈”事务类型,其中除一个资源外,所有资源都是事务性的。在这种情况下,none-transactional资源应该是最后一个,当它抛出异常时,所有其他事务资源都将回滚。 这是一种虚构的交易行为,非常有效

更多信息请参见下面链接的“XA和最后一个资源策略”部分:

在上述示例中,这是否意味着非交易出站也是交易的一部分?您所说的“交易的一部分”是什么意思?它无法注册事务,因为它不是事务性的。但是当前事务在其边界处既没有挂起也没有解析,因此如果抛出异常,它有可能将其标记为回滚。