如何在Spring Batch Job Repository中插入自己的记录?

时间:2015-05-01 18:39:15

标签: java spring spring-batch

我正在使用Spring Batch来处理来自PostgreSQL数据库的一些数据,但是我有一个长期运行的查询/分析来生成输入数据 - 它不仅仅是一个SELECT语句。而不是让ItemReader必须使用PostgresPagingQueryProvider来逐步浏览数据(我可能有数百万条记录和PostgreSQL JDBC驱动程序游标实现检索到客户端的所有数据),这将多次调用这个长时间运行的查询,我是想知道是否有办法做以下事情:

  1. 准备好数据准备工作'具有调用数据库函数的ItemReader的步骤/作业,此数据库函数执行长时间运行的分析,将结果存储在数据库表中。此数据库函数的返回值是它写入的记录数。
  2. 这个记录的数量和成功/失败状态然后以某种方式'记录在Job Repository中的记录数量(我不需要ItemWriter来实际写任何东西,因为ItemReader调用的函数将结果写入数据库表)。
  3. 下一步/作业是标准的Spring Batch设置,其中ItemReader从此数据库表中查询数据,在ItemProcessor中做出决策,并使用ItemWriter存储结果。
  4. 我知道还有其他方法可以在不使用Spring Batch的情况下完成此任务,但由于我将有一个Job Repository来跟踪标准的操作。 Spring Batch处理,我希望有一种方法可以保持这个数据准备的状态。作业库中的步骤/作业也是如此。

    看起来StepExecutionListener或JobExecutionListener可能是拦截Step / Job执行以设置这些值以存储在JobRepository中的选项,但我想知道是否还有其他方法可以实现此目的(或者如果这只是一个非常糟糕的主意。)

    提前致谢。

0 个答案:

没有答案