使用2个不同的数据源:Spring批处理

2024-01-04

我有2个不同的数据源,一个用于读取,另一个用于写入结果,如下所示:

  • ItemReader 应从 dataSource_1 获取数据。
  • ItemWriter 应将数据写入 dataSource_2。

知道读者和作者在同一个任务中。

根据文档,我们可以在 tasklet 上配置单个事务管理器

在这种情况下,我该如何使用事务管理器?

我不能依赖容器,而且我没有使用 ORM 层(JPA..),我使用直接 JDBC 驱动程序读取数据库 1 并写入数据库2。

当前配置:

<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${batch.or.jdbc.driver}" />
    <property name="url" value="${batch.or.jdbc.url}" />
    <property name="username" value="${batch.or.jdbc.user}" />
    <property name="password" value="${batch.or.jdbc.password}" />
</bean>

<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${batch.caux.jdbc.driver}" />
    <property name="url" value="${batch.caux.jdbc.url}" />
    <property name="username" value="${batch.caux.jdbc.user}" />
    <property name="password" value="${batch.caux.jdbc.password}" />
</bean>

<bean id="baseReader" class="org.springframework.batch.item.database.JdbcCursorItemReader">
        <property name="dataSource" ref="dataSource1" />
</bean>

<bean id="baseWriter" class="org.springframework.batch.item.database.JdbcBatchItemWriter">
        <property name="dataSource2" ref="dataSource2" />
        <property name="sql" value="${batch.param.insert}" />
</bean>

我如何使用 Spring Batch 配置 JTA/XA 事务 ( Atomikos )?


您将需要通过 JTA 事务管理器为 2 个数据源使用 XA 兼容驱动程序。

看到这个article http://blog.springsource.org/2011/08/15/configuring-spring-and-jta-without-full-java-ee/和这个one http://www.javaworld.com/javaworld/jw-01-2009/jw-01-spring-transactions.html如果您不熟悉分布式事务

regards

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用2个不同的数据源:Spring批处理 的相关文章

随机推荐