以下片段1, 2各添加事务, 然后将路由1,2加到路由0中, 在路由0中不加任何事务, 这样路由1,2的事务就独立了, 这是在同事的帮助下配置出来的.
两个事务添加到一个无事务的路由中, 这样两个事务就独立了.
<camel:camelContext id="camelContext">
<!-- 0 -->
<camel:route>
<camel:from uri="direct:jdbc"></camel:from>
<camel:to uri="direct:jdbc1"></camel:to>
<camel:to uri="direct:jdbc2"></camel:to>
</camel:route>
<!-- 1 -->
<camel:route>
<camel:from uri="direct:jdbc1" />
<camel:transacted />
<camel:to uri="bean:testCamel6?method=insert3" />
</camel:route>
<!-- 2 -->
<camel:route>
<camel:from uri="direct:jdbc2"></camel:from>
<camel:transacted />
<camel:to uri="bean:testCamel6?method=insert4" />
<camel:to uri="bean:testCamel6?method=insert2" />
</camel:route>
</camel:camelContext>
一个路由转到另一个路由中, 这两个路由都有事务, 这样的话它们是在同一个事务中的. 在尝试的时候思维固定在一个路由调另一个路由, 及在同一个路由中的情况,还有就是配置spring的声明式事务, 就是没有考虑将两个事务放到一个无事务中,这应该跟自己的知识面有关.
以上只是针对传播性为PROPAGATION_REQUIRED. 传播性为PROPAGATION_REQUIRES_NEW,因为需要jta的支持, 在系统中没有用到jta所以没有进行尝试.