Transactions Mule:子流的事务管理器

Transactions Mule:子流的事务管理器,transactions,mule,mule-studio,mule-component,Transactions,Mule,Mule Studio,Mule Component,尝试为包含各种子流的mule流实现一种事务方法,每个子流使用invoke组件在springbean中包含一些数据库插入 <amqp:inbound> <flow ref="subflow1"> <flow ref="subflow2"> <flow ref="subflow3"> <amqp:outbound> 其中,子流1和子流2都包含对服务bean的调用,服务bean调用DAO数据库操作(使用hiber

尝试为包含各种子流的mule流实现一种事务方法,每个子流使用invoke组件在springbean中包含一些数据库插入

<amqp:inbound>
    <flow ref="subflow1">
    <flow ref="subflow2">
    <flow ref="subflow3">
<amqp:outbound>

其中,子流1和子流2都包含对服务bean的调用,服务bean调用DAO数据库操作(使用hibernate会话)。子流3是对外部系统的调用

<flow name="subflow1">
        <invoke object-ref="serviceBean" method="databaseOperation" methodArguments="#[message.inboundProperties]"/>
</flow>

建议实现事务管理器的最佳方法,即如果任何子流失败,则应回滚在早期子流中执行的所有insert语句

  • 在流引用周围放置一个
    事务性
    范围
  • 对子流使用
    sub-flow
    而不是
    flow
    ,这样子流中发生的异常将冒泡到调用方流的事务范围

谢谢@david。但是使用flow并不更好,因为我们可以为流指定异常策略,否则在子流中它将继承主流的异常策略。您可以使用
flow
s,但您必须非常小心使用本地异常策略,以避免在需要时阻止事务回滚。