spring-batch - Spring Batch MongoBatchItemWriter 不刷新/提交到 mongo
问题描述
开始为新项目使用 Spring Batch。我有一个简单的批处理应用程序(基于 Person 示例),它按顺序调用了 4 个作业。前 2 个作业删除 mongo 集合的所有元素,下一个作业是 Person 作业,第 4 个作业操作在作业 #3 中加载的数据。
每个 Job 有 1 个步骤。每个步骤都有一个唯一的 MongoItemWriter。在应用程序完成之前,MongoItemWriters 似乎不会刷新到 mongodb,但不是在步骤或作业结束时。
从平面文件加载数据的作业是这样的:
@Bean
@Qualifier("personWriter")
public MongoItemWriter<Person> mongoItemWriter(MongoTemplate mongoTemplate) {
return new MongoItemWriterBuilder<Person>().template(mongoTemplate)
.collection("person")
.build();
}
@Order(10)
@Bean
public Job importUserJob(PersonCompletionNotificationListener listener, Step step1) {
return jobBuilderFactory.get("importUserJob")
.incrementer(new RunIdIncrementer())
.listener(listener)
.flow(step1)
.end()
.build();
}
@Bean
public Step step1(@Qualifier("personWriter") MongoItemWriter<Person> writer) {
return stepBuilderFactory.get("importUserStep")
.<Person, Person>chunk(1)
.reader(reader())
.processor(processor())
.writer(writer)
.build();
}
当下一个作业运行时,该表是空的。
我预计任何 Chunk size=1、End of Step 或 End of Job 都会刷新到 mongo。我错过了什么?
解决方案
推荐阅读
- c# - 协程不等待仍然完成音频
- excel - Set olMail = Nothing Set olApp = 在 VBA 代码中什么都不做以通过 Outlook 从 excel 发送电子邮件?
- python - Slack 交互式消息:POST 请求有效负载具有意外的格式
- vue.js - 搜索栏中的输入图标
- javascript - 如何从另一个文件触发子进程代码?
- c# - SQL Server 数据行异常语法不正确
- c++ - 接收与内存相关的运行时错误并搜索代码效率提示
- node-red - 有没有办法捕获所有流异常?
- java - 运行时错误:循环停止但未完全执行循环
- python - Python 3.x - 将 PDF 返回到浏览器