首页 文章

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

提问于
浏览
6

我有两个不同的 datasources ,一个读取,另一个写下面的结果:

  • ItemReader应该从dataSource_1获取数据 .

  • ItemWriter应该将数据写入dataSource_2 .

知道读者和作者在同一个tasklet中 .

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

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

我不能依赖容器,我不使用ORM层(JPA ..),我使用直接JDBC驱动程序读入数据库1并写入database2 .

当前conf:

<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)?

3 回答

  • 1

    忘记Spring Batch .

    假设您需要编写一个从一个datasource1读取的应用程序服务,并写入datasource2,您需要做什么?

    分布式事务是您的最佳选择 . 这当然涉及额外的配置 . 如果您在J2EE容器(Websphere,Weblogic,JBoss等)中,那么它们提供的事务管理器应该能够处理分布式事务 . 您应该能够在Spring中为每个平台找到相应的TransactionManager实现 . 您需要的只是配置数据源(也应该在容器下)以使用XA感知驱动程序,并在您的应用程序中,使用相应的事务管理器,并通过JNDI查找XA感知数据源

    但是,如果您不能依赖容器(例如,您正在编写独立应用程序等),则需要找到能够执行此操作的事务管理器 . Atomikos是最着名的免费JTA / XA库之一 .

    当然,如果您百分之百确定所有事务感知操作都在datasource2中,您可以考虑仅将数据源事务管理器用于datasource2,但老实说,这不是我建议的首选方法 .

  • 0

    您需要使用与JTA事务管理器的2个数据源的XA兼容驱动程序 .

    如果你不熟悉分布式事务,请看articleone

    问候

  • 2

    如果读者可以在事务之外,则只能使用writer的trx管理器 . 如果您需要同一事务中的阅读器和编写器,可能需要一个兼容XA的事务管理器 .

相关问题