rav*_*234 5 java spring spring-batch
这是我上一个问题的延续。由于原始问题已关闭
根据接受的答案,可以使用tasklet,我还尝试在使用jackson / JsonFileItemWriter 的面向块的步骤中实现自定义项目编写器,我们可以使用它还是对性能有任何影响?
public void write(final List<? extends Person> persons) throws Exception {
for (Person person: persons) {
objectMapper.writeValue(new File("D:/cp/dataTwo.json"), person);
}
}
Run Code Online (Sandbox Code Playgroud)
问题 1: “是否推荐上述方法?”
问题 2: “我们可以在项目处理器本身中生成文件并使用无操作项目编写器吗?”
有人可以帮忙吗?
问题1:是否推荐使用上述方法?
您的情况是连续的,您必须为每条记录写入一个文件。因此,通过接收记录块的写入器,您不会获得任何额外的优势。
如果您的编写器发生任何错误,Spring Batch 将必须重试整个块并重写该块中迄今为止成功的文件,因为 Spring Batch 不会检查检查中的哪些记录无法写入。所以我认为与另一个问题上基于小任务的答案相比,它是有缺点的。
我们可以在项目处理器本身中生成文件并使用无操作项目编写器吗?
我在这里没有看到大的性能问题或错误处理问题,因为它是按记录记录的,即使为每个块调用一个空的无操作编写器也是如此。但是 Spring 必须在将块传递给 writer 之前对其进行缓存,这样万一 writer 抛出可跳过的异常,它可以重试。因此,即使您使用无操作写入器,它也会缓存它,但我不知道它会多快清除它,因为您是无操作写入器。
从最佳实践的角度来看,我对这种方法感到非常不安,就好像一个新的开发人员加入一样,他不会调查你的处理器以了解它正在充当编写器。
概括
我将在另一个问题上使用基于 Tasklet 的方法
| 归档时间: |
|
| 查看次数: |
293 次 |
| 最近记录: |