如何在WSO2 ESB中跨序列管理事务
我的ESB中有2个序列,分别是“seqDeleteEntry”和“seqInsertEntry” 序列“如何在WSO2 ESB中跨序列管理事务,wso2,wso2esb,Wso2,Wso2esb,我的ESB中有2个序列,分别是“seqDeleteEntry”和“seqInsertEntry” 序列“seqDeleteEntry”将根据收到的输入从表中删除条目。 代码片段: <sequence xmlns="http://ws.apache.org/ns/synapse"> <property xmlns:ns="http://org.apache.synapse/xsd" name="propertyName" expression="//Id/text()" s
seqDeleteEntry
”将根据收到的输入从表中删除条目。代码片段:
<sequence xmlns="http://ws.apache.org/ns/synapse">
<property xmlns:ns="http://org.apache.synapse/xsd" name="propertyName" expression="//Id/text()" scope="default" type="STRING"/>
<transaction action="new"/>
<property name="SET_ROLLBACK_ONLY" value="true" scope="axis2"/>
<dbreport useTransaction="true">
<connection>
<pool>
<password>$pwd</password>
<user>$uname</user>
<url>connectionURL</url>
<driver>$driver</driver>
</pool>
</connection>
<statement>
<sql>
<![CDATA[ delete from tbl_name where column_name = ?]]>
</sql>
<parameter expression="$ctx:propertyName" type="VARCHAR"/>
</statement>
</dbreport>
<sequence key="conf:/seqInsertEntry"/>
</sequence>
我的问题是:当在第二个序列(
seqInsertEntry
)中插入条目时出现错误(例如完整性约束冲突
)时,我需要回滚事务,以便恢复使用前一个序列(seqDeleteEntry
)删除的记录
在上面的示例中,我需要添加什么配置来实现事务管理
注意:我尝试设置以下属性,但没有帮助
<transaction action="new"/>
<property name="SET_ROLLBACK_ONLY" value="true" scope="axis2"/>
有人请澄清我错过了什么配置,或者我需要在上面的序列中添加
提前感谢。请参阅文档[1]和[2] [1] [2] 问候,
默翰请参考文献[1]和[2] [1] [2] 问候,
MohanVijay,我的理解是,交易不会跨序列进行,除非是在错误序列中(以及当错误同步出现时)。事务似乎附加到序列和客户端 您是如何实现故障序列的
如果我对跨序列事务的理解是错误的,我希望知道如何实现这一点:-)Vijay,我的理解是,事务不会跨序列进行,除非在错误序列中(以及当错误同步出现时)。事务似乎附加到序列和客户端 您是如何实现故障序列的
如果我对跨序列事务的理解有误,我希望知道如何实现这一点:-)你好,莫汉,谢谢你的链接。。。我查看了上述链接中给出的文档。但这对我没有帮助。在上面的文档中,delete和insert(通过DBReport)的顺序相同,而在我的例子中,它们的顺序不同。此外,我还尝试在链接中实现“faultSequence”,这也没有帮助。我认为交易没有按照我转发的顺序进行。有什么建议吗?提前谢谢。嗨,默翰,谢谢你的链接。。。我查看了上述链接中给出的文档。但这对我没有帮助。在上面的文档中,delete和insert(通过DBReport)的顺序相同,而在我的例子中,它们的顺序不同。此外,我还尝试在链接中实现“faultSequence”,这也没有帮助。我认为交易没有按照我转发的顺序进行。有什么建议吗?提前谢谢。
<transaction action="new"/>
<property name="SET_ROLLBACK_ONLY" value="true" scope="axis2"/>
useTransaction="true"