spring-batch相关内容

如何使用决策器终止Spring批处理拆分流中的步骤

我在Spring Batch中出现了以下设计缺陷。 步骤必须具有Next属性,除非它是拆分流的最后一步或最后一步。 决定者挡路必须处理决定者返回的所有案例。 正因为如此,在拆分流中,最后一步不会有NEXT属性,如果有决策器守卫它,那么它必须有NEXT属性。所以它不应该有这个属性,但是它也需要这个属性。第22条。 示例: ..
发布时间:2022-02-28 15:36:30 其他开发

从SkipListener检索ExecutionContext时出现问题

我正在尝试从SkipListener检索春批ExecutionContext。 以下是我的尝试(我依靠注释而不是接口来实现我的监听器): import com.xxxx.domain.UserAccount; import lombok.extern.slf4j.Slf4j; import org.springframework.batch.core.StepExecution; im ..
发布时间:2022-02-28 15:34:43 其他开发

项目写入期间意外的回滚计数和对shouldSkip()的调用

Spring文档(PG.46节:5.1.7)表示: 默认情况下,无论重试还是跳过,ItemWriter抛出的任何异常都将导致步骤控制的事务回滚。如果如上所述配置了Skip,则ItemReader抛出的异常不会导致回滚。 我的提交间隔设置为10。因此,我对上面段落的理解是,如果他们在读取10个记录块中的第7条记录时出错,则该项将被跳过,而正确的9条记录将由itemReader提前发送。 但 ..
发布时间:2022-02-28 15:33:11 其他开发

在写入数据库之前使用Spring Batch处理批量记录

在Spring批处理代码中,我正在读取100条记录。对于块中的每条记录,我都在检查该记录是否存在于数据库中。如果数据库中存在该记录,我不会插入它。 第一次,如果我在100的块中有重复的记录,Spring Batch Processor不能识别该记录是重复的,因为DB中没有数据,处理器将首先选择全部100,然后执行插入。 有没有一种方法可以先在100的区块内执行检查,然后检查DB,然后再将这 ..
发布时间:2022-02-28 15:31:52 其他开发

在Kubernetes中未删除Spring Cloud任务-Worker Pod

我们使用的是基于Spring-cloud-deployer-kubernetes的Spring Batch远程分区,由于某些原因,Worker Pod在Worker执行之后没有被删除。不知道通过TaskLauncher开始清理的配置是什么。 谢谢 推荐答案 虽然Pod会留下来,但当应用程序中的业务逻辑/操作完成时,它们不会运行一次。当容器/POD完成操作时,它们将切换到“完成”状 ..
发布时间:2022-02-28 15:29:57 其他开发

如何停止/终止Spring Batch中执行监听器的步骤?

我在Step Execution Listener中进行了文件名验证。如果文件名无效,我想终止/停止进入读卡器的步骤。如何在Sprrig Batch中实现这一点? 推荐答案 侦听器不是进行数据验证的位置。如果必须验证单个数据项,请使用处理器并引发相应的异常。 如果要验证更多“常规”方面,如文件名、文件是否存在或不属于单个项目的任何其他条件,请在处理步骤之前使用微线程步骤。 ..
发布时间:2022-02-28 15:28:20 其他开发

如何在处理后将文件移动到存档和错误文件夹

作业运行一次,并尝试在一个步骤中处理源文件夹中的所有可用文件。此外,它还需要将已处理/尝试过但失败的文件从源文件夹删除到另一个后续文件夹(/_Archived、/_Faild)。使用Spring Batch分类移动存档文件夹中成功处理的文件和错误文件夹中未成功的文件的最佳方式是什么? 推荐答案 您可以添加单独的tasklet或使用JobExecutionListener.afterJo ..
发布时间:2022-02-28 15:25:52 其他开发

Spring Batch:Tasklet引发异常时的侦听器事件

我正在使用一个tasklet和一个StepExecutionListener,但是在我的tasklet抛出异常的情况下似乎没有侦听器回调。对于各种其他监听程序类型(ChunkListener、ItemProcessListener等),这些监听程序都不使用微线程。 我想要的就是在我的微线程执行之后发生一个事件,而不管它是否抛出异常。有可能做到这一点吗?API似乎不支持它。 编辑:响应@ ..
发布时间:2022-02-28 15:24:18 其他开发

Spring Batch:跳过后调用处理器两次

我定义了一个块,提交间隔为10,跳过限制为10。处理器类通过应用一些算术运算来操作字段。在处理器类中,其中一条记录(例如第6条记录)出现异常。在此之后,再次处理从1到5的记录,跳过第6个记录,处理7-10个记录并将其写入XML(自定义XML编写器类)。因为处理器处理1-5条记录两次,所以预期的字段值是错误的,因为它被计算了两次。您能建议一个解决方案,让处理器只处理记录一次,只跳过失败的记录,并将处 ..
发布时间:2022-02-28 15:22:44 其他开发

Spring Batch:一次处理多条记录

我使用的是Spring Batch,和往常一样,我有阅读器、处理器和写入器。 我有两个问题 1> 读取器查询所有200条记录(表中的总记录大小是200,我给出了pageSize=200),因此它得到了所有200条记录,而在处理器中,我们需要所有这些记录的列表,因为我们必须将每条记录与其他199条记录进行比较,以便将它们分组到不同的层中。 因此,我在想,如果我们可以在处理步骤中获得该列表 ..
发布时间:2022-02-28 15:21:15 其他开发

Spring Batch暂停/恢复VS停止/重新启动

我是Spring Batch的新手,有一些关于暂停/恢复的问题。在阅读了Spring Batch文档之后,似乎没有任何内置的暂停或恢复功能。但是,我从主站点找到了这个用例: http://docs.spring.io/spring-batch/2.0.x/cases/pause.html 没有提供示例代码,或者是否有任何地方可以找到这些示例? 在Spring Batch中,我知道 ..
发布时间:2022-02-28 15:20:03 其他开发

Spring Batch和Pivotal Cloud Foundry

我们正在评估Spring Batch框架,以在我们的组织中取代我们自己开发的Batch框架,我们应该能够在Pivotal Cloud Foundry(PCF)中部署该批处理。在这方面,您能告诉我们您对以下问题的看法吗: 比方说,如果我们使用远程分区策略来处理大量记录,那么批处理作业是否可以根据批处理作业处理的数量自动扩展云中的Slave节点?或者我们必须扩展适当数量的从属节点,并在批处理作业 ..
发布时间:2022-02-28 15:18:31 其他开发

执行作业=[作业]时检测到重复的步骤[步骤2]。如果任一步骤失败,将在重新启动时再次执行这两个步骤

Spring批处理决策器将进入forloop。我有以下要求。 如果Step1执行,选中Decider()If"Yes"THEN EXECUTEStep2,如果Step2完成,则执行Decider()f"NO"THEN END Job,If"Yes"THEN EXECUTEStep3。 任何指导,我们如何在批中配置? 2020-12-08 11:41:11.473 INFO 1680 ..
发布时间:2022-02-28 15:16:50 其他开发

处理1.15亿条记录以插入Oracle的性能优化

我有一个要求,即我要读取放在Unix中的19 GB大小的文本文件,并且具有大约1.15亿条记录。文件放置到位置后,Autosys和Shell脚本将触发我的Spring批处理(启动器)。 最初执行此过程时,读取、处理(Null检查和日期分析)以及将数据写入Oracle数据库大约需要72小时。 但在进行了某些配置更改(如使用Throttle Limit、Task Executor等)后,我 ..
发布时间:2022-02-28 15:15:44 其他开发

Spring Batch JdbcCursorItemReader导致内存不足问题

我正在使用Spring Batch框架进行数据迁移。我使用的读取器是JdbcCursorItemReader。我将块大小设置为500,并将读取器获取大小设置为1000。但是,当使用Spring Batch运行该服务时,它似乎只读取了内存中的所有数据一次,然后就耗尽了内存。然后抛出内存不足的问题。下面是我对读者的定义: private JdbcCursorItemReader ..
发布时间:2022-02-28 15:14:39 Java开发

使用Spring Batch从CSV文件中只读选择列

有一个CSV文件有100列,但我们只需要将3-5列加载到数据库中。 我不想在作业XML中指定linetokenizer中的所有100列。 请建议我们在这种情况下如何处理 推荐答案 尝试使用自定义fieldSetMapper。您可以将其与带索引的ResultSet类似地使用。 只有当您想要自动映射时,才必须列出所有列名。 仅指定分隔符,在您的情况下为“,” ..
发布时间:2022-02-28 15:12:11 其他开发

如何使用Spring表达式语言获取作业ID?

我想使用Spring表达式语言获取作业ID。我尝试了#{jobExecutionContext[jobId]},但不起作用。 Spel 仅使用Spel无法访问作业ID。 推荐答案 仅使用Spel无法访问作业ID。您可以使用JobExecutionListener将其添加到ecutionContext,然后就可以通过您正在尝试的内容使用它。 ..
发布时间:2022-02-28 15:10:54 其他开发