WMB 8.0计算节点中的自动和提交事务模式有什么区别?

问题描述 投票:1回答:2

WMB 8.0计算节点中的自动和提交事务模式有什么区别?

我们开发了一个带有计算节点的消息流,该计算节点将记录插入到Oracle DB表中。流程看起来像 MQInputNode(Out terminal)---> Compute Node MQInputNode(Catch terminal)--->错误处理流程

我们在该流程中设置的属性如下。

  1. MQ Input节点的事务属性为“Yes”
  2. 将节点事务属性计算为“自动”
  3. MQ输入节点捕获终端连接到已经开发的错误处理子流

在计算节点中,我们只是解析消息并将记录插入表中。考虑消息有2条记录的情况。第一条记录有效,第二条记录无效。

当我们将事务属性设置为“自动”时,第一条记录将被插入并正确提交,尽管插入了第二条记录抛出异常。我们认为它是一个成功的流程,因为我们已经捕获了该异常并使用MQ Input catch终端正确处理。

但是当我们设置,事务属性为“提交”时,甚至第一条记录也没有插入。与我合作的WMB开发人员告诉“Commit”是一个节点级属性,因此当第二个记录插入时,抛出异常和第一个记录将从DB中回来。

我已经通过了WMB信息中心。没有提到Automatic is Commit是节点级别,如果该节点中的任何异常将回滚插入的记录。

请澄清。

messagebroker
2个回答
0
投票

该设置控制事务性和事务范围。

如果设置为“自动”,则事务性将从输入节点继承。在这种情况下,输入节点设置为“是”,因此您将获得事务范围的事务性,该事务覆盖整个消息流调用。

当设置为“commit”时,事务的范围是计算节点本身,并且当处理退出计算节点时将提交工作(在这种情况下退出我的意思是计算节点完成,而不是通过传播到另一个节点退出)。


-1
投票

自动:如果你的tnx在db操作后出现故障,你将丢失插入数据库的数据。(rollback)

提交:即使您的tnx出现故障,也会提交db数据

© www.soinside.com 2019 - 2024. All rights reserved.