【问题标题】:Seperate datasource for jobrepository and writer of Spring BatchSpring Batch 的 jobrepository 和 writer 的单独数据源
【发布时间】:2015-01-05 09:36:20
【问题描述】:

工作很简单 CSVtoDBFileWriter :

  1. 从 oracle1 读取 CSV 文件名和位置
  2. 读取 CSV 文件(batchreader)
  3. 在表中写入(批量写入器)(oracle2)

我有 2 个数据源:

  • Oracle1

          : available when application context loads and 
          : I read properties from Oracle1's tables to create oracle2
          : jobRepository related tables should be stored here(oracle1)
    
  • Oracle2:Spring batch 的 writer 最终输出的目标数据库。

问题 1:我需要 XA 事务管理器吗?

问题 2:我能否仅使用 Spring Boot 在生产环境中运行此应用程序,在生产环境中使用 Spring Boot 是否存在挑战?

【问题讨论】:

  • 我可以通过将 oracle2 数据源直接放入编写器中来完成此工作,如下 itemWriter.setDataSource(destinationDataSource());它现在使用任何事务管理器吗?和oracle1数据源使用的一样吗?

标签: spring batch-processing spring-batch spring-boot


【解决方案1】:

当 SB 元数据表存储在与用于数据写入的数据库不同的数据库中时,您只需要 XA 事务,因为检查点(数据和 SB 元数据)必须同时存储以处理同步和可重新启动性。
可以毫无问题地从不同的数据源进行读取,因为读取与 SB 元数据的保存位置无关。

【讨论】:

  • 谢谢。那么我也可以让 Reder(oracle1,oracle2,ftp,sftp) 和 Writer(oracle1,oracle2,ftp,sftp) 动态获取数据源吗?所以一项工作,但读者和作者动态地选择上述端点的排列组合?
  • SB 需要一个数据库数据源来存储元数据。如果您的编写器涉及不同的数据库数据源,您需要 XA。
  • 我当然同意。另一个问题是我应该为读者和作家的组合编写单独的作业,还是我可以编写一个可以动态注入读者和作家的单一作业。
  • 现在我帮不了你了,对不起。打开一个新问题,因为我认为这个新问题需要一个更详细的答案,而不是评论
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-30
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
  • 2016-06-16
相关资源
最近更新 更多