gpt4 book ai didi

java - Spring 批处理中的多个读取器/处理器/写入器

转载 作者:行者123 更新时间:2023-12-01 03:04:13 25 4
gpt4 key购买 nike

我是 Spring Batch 的新手,我有一个特殊的问题。我想通过 JpaPagingItemReader 从 3 个不同的 jpa 查询中获得结果并单独处理它们并使用 StaxEventItemWriter 将它们写入一个统一的 XML 文件中。 .

例如,结果 XML 看起来像,

<root>
<query1>
...
</query1>
<query2>
...
</query2>
<query3>
...
</query3>
</root>

请让我知道如何实现这一目标?

此外,我目前使用一个查询实现了我的配置器,但读取器/写入器也很慢。生成 20MB 的文件大约需要 59 分钟,因为我现在在单线程环境中运行它而不是多线程环境。如果有任何其他建议,请告诉我。谢谢。

编辑:
我尝试遵循这种方法:
创建了 3 个不同的步骤并在每个步骤中添加了 1 个读取器、处理器、写入器,但我现在面临的问题是写入器无法写入同一个文件或附加到它。
这是写在 StaxEventItemWriter 类中的: FileUtils.setUpOutputFile(file, restarted, false, overwriteOutput);这里第三个参数 append 默认为 false。

最佳答案

解决您的问题的第二种方法似乎是正确的方向,您可以创建 3 个不同的读取器/处理器/写入器并创建您的自定义写入器,它应该扩展 AbstractFileItemWriter,其中允许 setAppend。另外,我已经看到 xmlWriter 比 StaxEventItemWriter 编写更快的 xml,但是在编写样板代码时有一些权衡。

关于java - Spring 批处理中的多个读取器/处理器/写入器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59208037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com