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

Spring批处理中的验证步骤

戈华茂
2023-03-14

我第一次使用Spring batch,我需要一些关于验证步骤的帮助。

在真正开始我的批处理作业之前,我需要对要处理的文件进行一些验证,例如:

  • 使用数据库中的信息检查名称
  • 使用来自系统和数据库的信息检查第一行和最后一行(特定)
  • 用第一行中的数据检查总行号

在那之后,我真的可以开始我的批处理工作了。

我认为有多个步骤相互链接,第一步进行验证,如果文件无效,则进入错误步骤。

我如何进行验证?所有找到的阅读器只给我一行文件,我必须创建自己的阅读器吗?你会采取什么方法来管理这种行为?

共有2个答案

辛弘壮
2023-03-14

您可以使用单步并制作一个侦听器,您可以在beforeStep中验证您想要的任何内容,或者您可以有两个步骤,第一步是验证并在StepExecutionListener的postStep方法中返回适当的返回状态。

在要验证的短用侦听器中,请参考这里的一个非常好的示例

要验证输入文件,可以参考以下示例

晏弘雅
2023-03-14

对于第一点,请使用JobExecutionClader;如果测试未通过,则以错误结束您的工作。对于剩余的要点,您可以编写自己的阅读器或

  • 第一行使用FlatFileItemReader。setLinesToSkip()FlatFileItemReader。setSkipedLineScalBack()
  • 使用PeakableItemReader检查您是否在最后一行,并在处理器阶段执行不同的验证

这种方法可能需要您为第一行、最后一行和其他行编写不同的域对象。

 类似资料:
  • 我正在使用Spring batch处理一个带有页眉、详细信息和页脚记录的文件。页脚包含文件中的记录总数。如果dosent的详细记录计数与页脚中的计数匹配,则不应处理该文件。

  • 我正在使用Spring batch进行批处理,在进行批处理之前,我想验证所有作业参数,如productName、productID、开始日期、结束日期、productType,如果这些作业参数为null或包含错误值,我必须使验证步骤失败,并使作业失败。 我已经编写了验证步骤和Tasklet,在我的Tasklet中,我计划处理作业参数验证(对所有作业参数执行空检查)。因为我是第一次做Spring批处

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

  • 我正在尝试修复Spring Batch中的一个问题,这个问题最近一直困扰着我们的系统。我们有一份工作,在大多数情况下都很好。下载和处理数据是一个多步骤的工作。 问题是有时工作会爆棚。也许我们试图连接到的服务器抛出了错误,或者我们在工作进行到一半时关闭了服务器。此时,下次我们的quartz调度程序尝试运行该作业时,它似乎什么也不做。以下是此作业定义的删节版本: 委婉地说,我是Spring Batch

  • 我正在做一个项目,我将使用Spring批处理和Spring集成来创建工作流系统。这个工作流系统应该能够从队列中读取消息,这实际上是来自客户端的作业请求,根据作业请求类型,我需要调用一些7-8系统。 每个系统从某个位置读取输入文件(通常是一个集中存储系统,其中所有输入文件都存储在客户提交的文件中),对其进行处理,然后将其传递给下一个系统,最终我应该能够响应客户端,例如SUCCESS如果它被所有系统成