将jobrepository的数据源与Spring批处理的编写器分开

将jobrepository的数据源与Spring批处理的编写器分开,spring,batch-processing,spring-batch,spring-boot,Spring,Batch Processing,Spring Batch,Spring Boot,作业是简单的CSVtoDBFileWriter: 从oracle1读取CSV文件名和位置 读取CSV文件(batchreader) 在表中写入(批处理编写器)(oracle2) 我有两个数据源: Oracle1 : available when application context loads and : I read properties from Oracle1's tables to create oracle2 : jobRepository r

作业是简单的CSVtoDBFileWriter:

  • 从oracle1读取CSV文件名和位置
  • 读取CSV文件(batchreader)
  • 在表中写入(批处理编写器)(oracle2)
  • 我有两个数据源:

    • 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的编写器将最终输出的目标数据库

    问题1:我需要XA transactionManager吗


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

    当SB元数据表存储在与用于数据写入的数据库不同的数据库中时,您只需要XA事务,因为检查点(数据和SB元数据)必须同时存储以保证同步和可重启性。

    可以从不同的数据源进行读取而不会出现问题,因为读取与保存SB元数据的位置无关。

    我可以通过将oracle2数据源直接放入writer中来实现这一点,如下所示itemWriter.setDataSource(destinationDataSource());现在是否正在使用事务管理器?它与oracle1数据源使用的相同吗?谢谢。那么,我还可以让Reder(oracle1、oracle2、ftp、sftp)和Writer(oracle1、oracle2、ftp、sftp)动态地拾取数据源吗?因此,一个作业,但读写器动态地选择上述端点的相互组合?SB需要一个DB数据源来存储元数据。如果您的编写器涉及不同的DB数据源,则需要XA。当然,我同意这一点。另一个问题是,我应该为读者和作者的组合编写单独的作业,还是可以编写一个可以动态注入读者和作者的作业。现在我帮不了你,对不起。打开一个新问题,因为我认为这个新问题需要一个更详细的答案,而不是一个评论