当前位置: 首页 > 知识库问答 >
问题:

如何在Spring批处理中提交ItemWriter后更新源数据的状态

左丘昕
2023-03-14

我使用带分页的ItemReader从源表获取数据。在ItemProcessor上,我将使用项的id逐个向服务发送rest请求,并将其响应传递给ItemWriter以存储在另一个表中。

首先读取(第1页),区块上的每个项目的状态为未处理,然后在处理并将其响应保存到另一个表后,我想更新当前区块中要处理的所有项目的状态。

在ItemReader上,我正在选择所有状态为未处理的项目。从状态=未处理的表中选择*

我的问题是,在保存响应后,如何更新源表中已处理的每个项目的状态。因为如果我更新状态,由于更新,分页将不再正确。第2页将跳过一些项目。

共有1个答案

阚英武
2023-03-14

正在写入远程服务响应的ItemWriter还可以写回源表。因此,项目编写器应该执行以下操作

  1. 编写Web服务的响应
 类似资料:
  • 当应用程序在单个实例中运行时也是如此。 有人可以帮助如果有任何额外的步骤,我必须介绍更新步骤和工作完成?

  • 我需要访问两个数据源: Spring批处理存储库:在内存H2中 我的步骤需要访问。 我在那里看到了几个关于如何创建自定义

  • 我在没有ItemWriter的情况下定义了我的tasklet,如下所示: 我得到了这个错误: 配置问题:

  • 我有一个假问题。为了解释我的用例,我有不同类型的DAO;比如说啤酒。。。等等,我想用一个通用的ItemWriter来处理所有的问题。我创建了一个,在这里我定义了; 作家班是这样的; 到目前为止一切都还好。事情变得复杂的地方是,我为每个存储库定义了单独的配置类,其中定义了存储库特定的项。例如,为用户插入数据库的步骤。 当我用IJ编写这段代码时,我抱怨

  • 我有写入数据库的Spring Batch作业(它有一个带有的步骤)。我有一个联调,如下所示: 在测试中运行作业时,它会提交到数据库。如何防止提交到数据库?通常,我可以添加以在每次测试后回滚事务。但是,当我将注释添加到测试类时,我收到: 使现代化 我试图将添加到测试类中。但是,仍然提交。 以下是应用程序代码中事务管理器的配置:

  • 我的项目进行批处理,并尝试使用2个数据源(oracle)(一个用于spring元数据,另一个用于应用程序)。 示例配置在github项目(github.com/jobas2007/spring_proj)中,但由于配置了2个事务管理器/数据源,因此在为2个数据源执行的提交中管理事务似乎不一致。主数据源(用于批处理)提交正确发生,但当最终在ItemWriter中进行“保存”时, 请建议一种管理多个数