spring-batch 相关问题

Spring Batch是一个轻量级,全面的框架,旨在实现对企业系统日常运营至关重要的批处理应用程序的开发。此上下文中的批处理应用程序是指针对批量数据处理的自动离线系统。

与 SimpleAsyncTaskExecutor 一起使用时,JdbcPagingItemReader 缺少读取少量记录

我正在尝试从表中读取数据并将数据转储到文件中 我的工作配置如下 任务执行者 --> @豆 公共 TaskExecutor tvlTaskExecutor() { SimpleAsyncTaskExecu...

回答 1 投票 0

如何为项目阅读器创建 Spring Batch 单独的类实现

我是 Spring Batch 的新手,我已经创建了基本的批处理实现,其中添加了平面文件项读取器并从 csv 文件读取数据,然后使用项写入将数据写入数据库。 乙...

回答 1 投票 0

Spring Batch FlatFileItemWriter - 输出定制

我需要生成一个具有以下要求的 CSV 文件: 每个字段都用双引号括起来 双引号用反斜杠转义 反斜杠用反斜杠转义

回答 2 投票 0

Spring Batch、CompositeItemWriter:在第一个 writer 中完成整个写入,然后启动第二个 writer

我使用Spring Batch 4.3.7。以下是我的 Spring Batch 配置的一部分,通常可以正常工作: @豆 公共 CompositeItemWriter compositeItemWriter() { 复合项目编写器<

回答 1 投票 0

如何在springbatch测试中的when().thenReturn()语句中模拟私有方法

springBatch Bean 中有一个私有方法。配置类。 @Slf4j 公共类 EodDataDumpSpringBatchConfig { 私有资源 getWriterResource(StepExecution stepExecution, Storage st...

回答 1 投票 0

春季批处理 - ORA-08177

org.springframework.dao.CannotSerializeTransactionException:PreparedStatementCallback; SQL [插入 BATCH_JOB_INSTANCE(JOB_INSTANCE_ID, JOB_NAME, JOB_KEY, VERSION) 值 (?, ?, ?, ?)]; ORA-08...

回答 3 投票 0

Spring Batch ORA-08177:运行单个作业时无法序列化此事务的访问,SERIALIZED 隔离级别

我在 Spring Batch 中的 JobRepository 上使用 SERIALIZED 隔离级别收到此异常: org.springframework.dao.CannotSerializeTransactionException:PreparedStatementCallback; SQL [插入

回答 11 投票 0

原因:错误:8177,位置:0,Sql = INSERT INTO BATCH_JOB_INSTANCE(JOB_INSTANCE_ID, JOB_NAME, JOB_KEY, VERSION) 在 Spring Batch 5

我正在使用 Oracle 的 Spring Batch 5。我有来自多个使用该数据库运行的项目的 30 多个批次。但它显示以下错误: 错误代码[8177]; ORA-08177: 无法服务...

回答 1 投票 0

Spring 批处理运行处理器/编写器的次数作为块大小

嗨,我想了解 Spring Batch 的设计。 给定以下作业配置: @豆 公共步骤 jobStep() { 返回新的 StepBuilder("stepName", repo) . 嗨,我想了解 Spring Batch 的设计。 给定以下作业配置: @Bean public Step jobStep() { return new StepBuilder("stepName", repo) .<List<Entity>, List<Entity>> chunk(10, txnManager) .reader(reader) .processor(processor) .writer(writer) .build(); } 以及以下示例处理器: public class JobProcessor implements ItemProcessor<List<Entity>, List<Entity>> { @Override public List<Entity> process(List<Entity> items) { for (Entity record: items) { //do some logic return items; } 我的观察是,读取器/处理器/写入器运行的次数与块大小相同。例如,在上面的例子中,处理器将运行 10 次,作者也将运行 10 次。如果我的阅读器只提取 2 条记录,则它小于块大小。 ItemProcessor中List的大小只有2——如果传入整个记录集,为什么还要额外运行8次?避免重复处理的唯一方法似乎是跟踪某个项目是否被处理(和写入)。 这并不难,但我想了解这是正常行为还是我做错了什么。 总而言之 - 如果 Spring Batch 记录集小于块大小,处理器/编写器不应该只运行一次,因为第一个块包含整个记录集? 编辑:这是我删除列表的尝试,但它仍然循环块次数,即使项目的大小只有 2。 @Bean public Step jobStep() { return new StepBuilder("stepName", repo) .<Entity, Entity> chunk(10, platformTransactionManager) .reader(reader) .processor(processor) .writer(writer) .build(); } public class JobReader implements ItemReader<Entity> { @Override public Entity read() { List<Entity> items = repo.getData(); return items.isEmpty() ? items.get(0) : null; } public class JobProcessor implements ItemProcessor<Entity, Entity> { @Override public Entity process(Entity entity) throws Exception { //do stuff return entity; } 这里看起来错误的是您正在操作实体列表。正确的代码应该是这样的: public Step jobStep() { return new StepBuilder("stepName", repo) .<Entity, Entity> chunk(10, txnManager) .reader(reader) .processor(processor) .writer(writer) .build(); } public class JobProcessor implements ItemProcessor<Entity, Entity> { @Override public Entity process(Entity item) { //do some logic on one item return item; } } 与您的问题中未显示的读者和作者类类似。

回答 1 投票 0

Spring Batch 中的幂等写入

让我们假设我们的工作流程如下: 从 CSV 中读取块 写入消息队列 我们有一个很大的 CSV 文件。当我们执行这个 CSV 文件时,我们的进程会以某种方式终止。所以我们发送了一些...

回答 1 投票 0

InvalidDataAccessApiUsageException:在 Spring 批处理中执行更新/删除查询

我正在使用Spring Batch。当我要更新 witter 的任何行时,它显示以下错误: org.springframework.dao.InvalidDataAccessApiUsageException:执行更新/删除查询 ...

回答 1 投票 0

在处理大型 csv 文件时,如何在 Spring 批处理中禁用/避免从下一个文件开始的linesToSkp(1)

我们有包含 1 亿条记录的大型 csv 文件,并使用 Spring Batch 通过使用“SystemCommandTasklet”拆分包含 100 万条记录的文件来加载、读取和写入数据库。下面是

回答 1 投票 0

Spring 批处理元数据表的问题

我在我自己的 Oracle 数据库中使用以下链接创建了 Spring Batch 元数据表 https://github.com/spring-projects/spring-batch/tree/main/spring-batch-core/src/main/resources/org/

回答 2 投票 0

如何使用java线程在bd中插入多个数据?

我必须制作一个程序,从数据库中获取数据并将查询返回的结果插入到另一个数据库中的另一个表中,该表包含的记录有数百万条,一小时内就有

回答 1 投票 0

Spring Cloud DataFlow - SpringBoot3 不显示执行统计信息

在 kubernetes 中运行 Spring DataFlow 并部署 docker 映像时,我没有看到执行中的 boot3 统计信息。我确实看到了数据库中的数据(在以 boot3 为前缀的表中),但没有......

回答 1 投票 0

如何处理取消同时运行多个批处理作业的支持?

Spring Batch 最近取消了一次运行多个批处理作业的机会。 因此,现在,您仍然可以将多个批处理作业打包到同一个应用程序中,但对于批处理的每次执行

回答 1 投票 0

使用 sftp 流式入站适配器以块形式流式传输文件

我正在使用 SFTP 流式入站通道适配器,它一次性读取整个文件。它给了我一个输入流,稍后由流转换器转换我想读取文件 dire...

回答 1 投票 0

Spring 批处理作业在任何时间仅运行一个实例

正在开发要部署在AWS ECS进程中的Spring Boot应用程序。该应用程序有 2 个 spring 批处理作业,由 cron 触发的服务层方法按顺序调用。 Job1是基于tasklet的...

回答 2 投票 0

如何为 Spring Batch 应用程序的每次运行创建一个新的 json 文件,而不是覆盖现有文件

@组件 公共类 FirstItemWriter { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_HHmmss"); 字符串时间戳 = dateFormat.format(new Date()); 字符串路径 = "C:\

回答 1 投票 0

JDBC 驱动程序将日期映射到 java.util.Timestamp,该时间戳在 sqlserver 中转换为 datetime2,导致数据比较出现问题

我在我的产品中使用 Spring Batch 框架。这是从mssqlserver数据库中读取一些数据,处理数据并使用where中的主键更新同一个表中处理后的数据

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.