WMB 8.0计算节点中的自动和提交事务模式有什么区别?
我们开发了一个带有计算节点的消息流,该计算节点将记录插入到Oracle DB表中。流程看起来像 MQInputNode(Out terminal)---> Compute Node MQInputNode(Catch terminal)--->错误处理流程
我们在该流程中设置的属性如下。
在计算节点中,我们只是解析消息并将记录插入表中。考虑消息有2条记录的情况。第一条记录有效,第二条记录无效。
当我们将事务属性设置为“自动”时,第一条记录将被插入并正确提交,尽管插入了第二条记录抛出异常。我们认为它是一个成功的流程,因为我们已经捕获了该异常并使用MQ Input catch终端正确处理。
但是当我们设置,事务属性为“提交”时,甚至第一条记录也没有插入。与我合作的WMB开发人员告诉“Commit”是一个节点级属性,因此当第二个记录插入时,抛出异常和第一个记录将从DB中回来。
我已经通过了WMB信息中心。没有提到Automatic is Commit是节点级别,如果该节点中的任何异常将回滚插入的记录。
请澄清。
该设置控制事务性和事务范围。
如果设置为“自动”,则事务性将从输入节点继承。在这种情况下,输入节点设置为“是”,因此您将获得事务范围的事务性,该事务覆盖整个消息流调用。
当设置为“commit”时,事务的范围是计算节点本身,并且当处理退出计算节点时将提交工作(在这种情况下退出我的意思是计算节点完成,而不是通过传播到另一个节点退出)。
自动:如果你的tnx在db操作后出现故障,你将丢失插入数据库的数据。(rollback)
提交:即使您的tnx出现故障,也会提交db数据