我有一个Spring批处理作业,由一个分区步骤和分区步骤组成,正在进行块处理。
我可以从方法Runnable
进一步启动新线程(实现public void write(List<? extends VO> itemsToWrite)
)吗?
基本上,作者在这里使用Lucene编写索引,并且由于作者有List
个chunk-size
项,我想将List
划分为段并将每个段传递给新的{{ 1}}。
这是一个好方法吗?
我对一个样本进行了编码,但大部分时间都有效,但几次卡住了。
有什么我需要担心的吗?或者是否有春季批量内置的东西来实现这一目标?
我不想让整个块的单个线程发生写入。我希望进一步划分大块。
Lucene Runnable
是线程安全的,列出了一种方法here
示例代码 - Writer获取IndexWriter
项,我从线程池中打开线程?即使我等待池终止一块,也会有任何顾虑,
List
答案 0 :(得分:0)
我不确定在编写器中启动新线程是个好主意。 这些线程超出了spring批处理框架的范围,因此您需要为上面的实现关闭和取消策略。如果一个段的处理失败,则可能导致整个队列失败。
作为替代方法,我可以建议将您的自定义列表从作者推广到下一步,如官方文档中所述passingDataToFutureSteps