问题标签 [spring-batch-tasklet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
477 浏览

spring - 清理spring批处理元数据mongodb

我正在使用Spring Batch MongoDB API。为了释放 MongoDB 中的一些空间,我决定通过从以下集合中删除任何超过两个月的数据来清理作业执行元数据: - JobInstance - JobExecution - ExecutionContext - StepExecution

有什么办法可以用 Spring Batch 做到这一点,或者我应该创建一个 Dao 并批量删除每个集合的旧数据。

0 投票
1 回答
1726 浏览

java - 我们可以使用spring Batch顺序处理多个文件,而多个线程用于处理单个文件数据..?

我想按顺序处理多个文件,每个文件都需要在多个线程的帮助下进行处理,所以使用了 spring 批处理 FlatFileItemReader 和 TaskExecutor,它似乎对我来说工作正常。正如要求中提到的,我们必须处理多个文件,因此与 FlatFileItemReader 一起,我正在使用 MultiResourceItemReader,它将获取许多文件并在我遇到问题时一一处理。有人可以帮我解决异常的原因吗?修复它的方法是什么..?

客户2.csv

客户3.csv

customer4.csv

客户5.csv

我的代码:

波纹管片段在以下使用时工作正常:

波纹管片段无法正常工作得到上述异常

0 投票
1 回答
71 浏览

spring - 春季多线程批处理作业的正确范围

我相信我在这里遇到了范围界定问题。

项目说明:

目标是处理任何传入的文件(在磁盘上),包括元数据(存储在 SQL 数据库中)。为此,我有两个小任务(FileReservation 和 FileProcessorTask),它们是总体“工人”工作中的步骤。他们等待一个事件开始他们的工作。有几个线程处理并发作业。FileReservation tasklet使用作业上下文将fileId发送到FileProcessorTask 。

一个单独的作业(无限期运行)检查数据库中的新文件元数据记录,并在发现新记录时使用已发布的事件“唤醒” FileReservationTask 小任务。

使用当前配置,当 FileReservation 小任务被唤醒时,作业的第二步可能会收到空消息。

如果您取消注释BatchConfiguration中的代码,您会发现当我们有单独的 bean 实例时它可以工作。

非常感谢任何指针。

谢谢!

0 投票
0 回答
2860 浏览

java - 执行弹簧批处理小任务步骤时出现空指针异常

正如问题所暗示的那样,我正在 java.lang.NullPointerException尝试通过两个步骤运行批处理作业。其中一个步骤是一个简单的 tasklet,而另一个是基于块的。批处理作业当前正在通过 REST 端点运行(仅用于测试目的)。

这就是我所拥有的:

作业配置类

小任务

正如您从评论中看到的那样,tasklet 应该不仅仅是打印 hello world 但到目前为止它甚至还没有打印出来。

控制器运行作业

堆栈跟踪

这就是我运行批处理作业的方式:

http://localhost:8088/api/batch/reporting?AsOfDate=2020-02-11

0 投票
1 回答
674 浏览

spring-batch - 春季批处理中的多线程步骤

我试图理解“多线程步骤”,这是春季批处理中实现并行处理其他并行步骤和分区的方法之一。

  • 我的问题与读者有关。例如,假设有一个包含 1000 条记录的文件,块大小为 100,线程数为 4。所以在这种情况下将有 10 个块,每个线程将被分配一个块开始并且当它完成的剩余块将被分配给线程时,在某个时间点只有 4 个块将由 4 个线程处理。但是线程是如何决定读取哪些数据的呢?假设第一个线程已经在处理 100 条记录,那么第二个线程为什么知道它不应该选择相同的记录并寻找其他线程没有选择的记录。

  • 在这种情况下,是否会有线程之间共享的 Reader 和 writer 的单个实例?如果是,那么任何类级别的资源都不是线程安全的?

谢谢,

0 投票
1 回答
71 浏览

spring-batch - Spring Batch中如何基于configruaiton动态形成XML

  1. 我必须从数据库表中读取数据并将其转换为 XML 文件。

  2. 此外,需要转换为 XML 的字段(表的列)应该是配置驱动的(属性文件或配置表)。

我已经使用 Spring Batach(Spring Boot App) 完成了第一部分。请提供指导以完成第二部分。

谢谢, 巴拉尚达尔

0 投票
1 回答
41 浏览

spring - 是否可以针对两个不同的 JobRepositories 配置两个不同的 Spring Batch JobRegistry?

我有一个应用程序,我为不同类别的工作配置了两个不同的 jobRepository(ies);现在我想运行一个类别的所有工作。我尝试使用 JobRegistry,但它有来自两个工作存储库的工作。如何获取特定作业存储库的所有作业的名称?谢谢。

0 投票
0 回答
62 浏览

spring-batch - Spring Batch 异常记录

我有一个多线程步骤 Spring 批处理作业,它使用 JdbcPagingItemReader 从数据库读取,处理并将消息发布到 jms 队列。我试图记录在任何阶段遇到的每个异常,无论是否跳过。

我试过 SkipListener 没有用。由于 SkipListener 尊重事务边界,因此如果在块本身内超出跳过限制,它将无法到达我的记录器代码。使用自定义 SkipPolicy,我能够记录异常但没有项目上下文。

有没有办法用上下文记录所有异常?

0 投票
0 回答
109 浏览

spring - 如何安排 Spring 批处理作业以重新启动应用程序

我有一个在构造函数中编写的方法。
当我安排 Spring 批处理作业时,该方法不会在特定时间间隔内被调用。
只有在 Spring Batch Application 启动时才会调用它。
任何人都可以建议任何逻辑我如何安排一个Spring Batch应用程序,该应用程序将在特定时间间隔内重新启动我的应用程序。

在 ItemReader 类的 run() 方法中调用 finalULPData

我无法在 run() 中调用 initialize(),因为 run() 方法会根据块大小重复调用。

此类从 BatchConfig 类中调用,如下所示。

0 投票
1 回答
183 浏览

java - Spring批处理:Tasklet的测试用例-从测试类调用时,键未出现在实际类中

我正在尝试学习 Batch 和 Tasklet。

我正在为 Spring Batch 中的 Tasklet 代码编写测试用例。我在我的测试类中设置一个地图并进行调试,实际的类没有我从我的测试类传递的密钥。

MyEventTasklet.java

MyEventTaskletTest.java

我不知道为什么会这样,我做错了什么?任何形式的帮助将不胜感激。