【发布时间】:2014-02-25 11:02:59
【问题描述】:
我正在尝试在我的 spring 批处理应用程序中实现 AbstractRoutingDatasource。 在调用该方法之前,我的数据源在 DAO 层进行了切换。
但问题似乎是 spring-batch 中的所有批处理作业都是基于事务的。 由于它们是基于事务的,所有数据源都在事务开始之前设置,并且不可能在事务中间切换数据源..
我的假设是否正确?以及解决它的任何解决方案/解决方法?
【问题讨论】:
-
这在任何基于 Spring 的应用程序中都不起作用。您需要在事务开始之前设置路由参数。所以是的,你的假设是正确的。
-
这在任何基于 Spring 的应用程序中都不起作用。您的意思是 Spring 批处理吗?但是批处理作业呢?抽象路由数据源永远不能应用于spring-batch??
-
也许这可以工作,但你必须使用 XA 跨越 tx;我没用过看看stackoverflow.com/questions/14369876/…
-
我指的是任何基于 Spring 的通用应用程序(不仅仅是基于 spring-batch 的)。 事务管理器启动事务时,从数据源请求JDBC连接。所以路由只能在 TX 启动时发生。
-
顺便说一句。查看这篇关于 spring-batch 中事务处理的精彩文章(如果您还没有阅读它们)-blog.codecentric.de/en/2012/03/…(不要忘记阅读第 2 部分和第 3 部分)。在 sprgin-batch 中有几个地方可以做“TX 魔术”。
标签: spring spring-batch