问题标签 [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 回答
2279 浏览

spring - 无法将 JobParameters 值传递给 Spring Batch 中的 tasklet

我已经关注了链接:Pass JobParameters and ExecutionContext to @Bean Tasklet? ,但在将jobParameters值传递给tasklet.

我开发了如下代码:

作业配置.java

JobLaunchingController.java

日志:

启动AJobApplication.java

卷曲:

curl --data 'name=foo' localhost:8080

0 投票
1 回答
3016 浏览

spring-batch - 重复 tasklet 步骤直到特定条件

我使用 Spring 批处理来构建 ETL 作业。我的主要工作只是从数据库中读取并写入另一个数据库。在我的主要工作之前,我需要检查源数据库中的状态以查看它是否准备好。只有当源数据库准备好时,我才会继续进行主要工作。我将检查状态逻辑实现为一个 Tasklet,并使用简单的逻辑构建我的作业,如果检查状态步骤失败重复此步骤,则步骤成功,然后继续主作业。我按如下方式构建工作:

检查状态步骤是一个 tasklet,如下所示:

我阅读了spring批处理文档,发现条件跟随中的ON方法将检查步骤的退出状态,以便我在StepContribution中设置退出状态。让我感到困惑的是,当我将这两行注释掉时,代码仍然有效。

所以我的问题是,首先,如果条件流检查退出状态,为什么我的代码在没有明确更改退出状态的情况下工作?其次,为什么tasklet会返回一个重复状态,以及这个重复状态是由谁消费的。第三,有没有更好的方法来实现我的目标?

0 投票
1 回答
546 浏览

java - 使用 @MockBean 模拟 JobExplorer 并抛出异常:InstanceAlreadyException

“如何在使用 JobLauncherTestUtils 测试单步时模拟 JobExecution?”

“我试过了

但它抛出异常:

但是当我单独运行它时它工作正常。所以我尝试使用

但这一个甚至不起作用:(然后我添加了

}

主要代码:


0 投票
0 回答
195 浏览

multithreading - 设计批处理作业以处理 FTP 文件夹中的多个文件

我想设计一个批处理作业来处理文件夹中的多个 zip 文件。基本上,输入的 zip 文件包含一个目录结构,最后一个目录包含 CSV 文件和一组 PDF。该作业应根据叶节点文件夹中的索引文件获取 zip 文件并解压缩并上传到外部系统和数据库。

例如:输入 zip 文件结构
input1.zip
--Folder 1
     --> Folder2
         --> abc.pdf
         ...
         ...
         ...
         --> cdf.pdf
         --> metadata.csv
        

我可以在 FTP 处理完成后添加 spring 集成并调用该作业。但是,我的问题是,我应该如何设计工作以获取多个 zip 文件并允许它们并行处理。

由于每个 zip 文件大约需要 10 分钟来处理,因此我需要多个实例来有效地处理 zip 文件。

感谢任何建议。谢谢你。

0 投票
1 回答
728 浏览

spring - 春季批处理回滚插入

在我的项目中配置了以下内容:

在加载文件时,我有重复的记录,但是由于我已经 org.springframework.dao.DuplicateKeyException在 下进行了配置no-rollback-exception-classes,因此 Spring 批处理不应该回滚记录,但仍然会回滚记录。如果我DuplicateKeyException从列表中删除 ,那么它会引发异常。我们正在使用 Spring 批处理版本: 3.0.7.RELEASE

预计不会回滚记录,但会回滚记录。

0 投票
1 回答
1076 浏览

spring - Spring Batch:读取多个json文件,一个一个处理

我在一个文件夹中有大约 200 个巨大的 JSON 文件,每个大约 300 mbs。我需要编写Spring批处理来读取文件并一一处理。

基本上意味着一次读取一个文件然后运行处理器然后运行编写器然后读取下一个文件,该文件基本上是客户数据和活动转储,每个文件包含多个用户数据和许多文件。像下面

由于空间问题,我无法一次读取所有文件。

这可能吗。什么是配置。

请帮忙。

0 投票
1 回答
723 浏览

java - 如何获取Spring批处理作业参数并传递给sql

我需要通过spring批处理作业来实现9个报告的提取,即完成。但我陷入了两者之间。我必须将作业参数传递给 spring 作业,并将该参数传递给 SQL 以生成不同的报告。我应该在这里使用什么概念?任何线索或帮助表示赞赏。

对于前工作将接受 2 个参数:ABC 和 xyz

这 2 个参数将在 reader 的 SQL 中使用,以生成不同的报告。

0 投票
0 回答
1016 浏览

spring - Spring Batch - 如何进行两个查询或将两个对象传递给处理器或编写器?

我正在开发Spring Boot Spring Batch代码。从 中读取数据Oracle DB并将所有数据加载到MongoDB (NOSQL DB). MongoDB根据实现 mongo 关系/建模的标准方式,建模被开发为非规范化方式。

我已经TableA和他们之间的TableB表和连接表是第三表。当我通过那个时间为每个PK IdTableAB读取Table 时,我需要查询Table 以获取所有PK 并将 SubDivision Data 设置为 TableA 的模型。TableA 模型具有列表 Of 。TableAJdbcCursorItemReader<TableA>TableASubDivisionSubDivisionTableASubDivisions

我看到从中进行查询TableAProcessor并将数据设置到模型中的唯一方法TableA,它易于实现,但问题是如果我有100K TableA 记录,它会从 TableAProcess 对 DB 进行 100K 调用。

如何实现这一点并将SubDivision数据设置TableA为使用 Tasklet 或任何其他方式的模型?

如何避免从处理器调用这么多查询?

由于某些限制,我无法进行单个查询,因此我需要再向 DB 查询一个查询以获取细分数据。

模型

表ABatchConfig.java

TableAJob.java

TableAWriter.java

0 投票
1 回答
1565 浏览

java - Spring Batch Multiple Steps vs Single Step

I am building a Spring Batch application.
Suppose that I have a Job which executes, for example:

  • Split an audio file
  • Perform Speech-To-Text
  • Suppose that I have a TaskExecutor, allowing the Chunk-oriented step(s) to be parallelyzed.

    Are there any benefits in using 2-Steps instead of putting all these operations in a single one?

    My doubt is that using 2-Steps causes the "already finished files" to wait for all the pool to complete, causing inefficiency.

    Thanks in advance

    0 投票
    2 回答
    1594 浏览

    spring-batch - 如果记录存在,则春季批处理示例检查更新,否则插入

    有 2 个表 Table1 和 Table2。必须从 Table1 中读取数据并将数据保存到 Table2。在保存到 Table2 之前,必须检查 Table2 中是否存在记录,如果存在则更新,否则插入。

    我是春季批次的新手并尝试使用它。不确定如何做到这一点。我在网上看到的例子都是数据库的平面文件。没有发现类似上面的东西。任何帮助表示赞赏。