从Spring Batch分区步骤的Writer启动Runnable

时间:2016-10-05 05:24:45

标签: java multithreading lucene spring-batch

我有一个Spring批处理作业,由一个分区步骤和分区步骤组成,正在进行块处理。

我可以从方法Runnable进一步启动新线程(实现public void write(List<? extends VO> itemsToWrite))吗?

基本上,作者在这里使用Lucene编写索引,并且由于作者有Listchunk-size项,我想将List划分为段并将每个段传递给新的{{ 1}}。

这是一个好方法吗?

我对一个样本进行了编码,但大部分时间都有效,但几次卡住了。

有什么我需要担心的吗?或者是否有春季批量内置的东西来实现这一目标?

我不想让整个块的单个线程发生写入。我希望进一步划分大块。

Lucene Runnable是线程安全的,列出了一种方法here

示例代码 - Writer获取IndexWriter项,我从线程池中打开线程?即使我等待池终止一块,也会有任何顾虑,

List

1 个答案:

答案 0 :(得分:0)

我不确定在编写器中启动新线程是个好主意。 这些线程超出了spring批处理框架的范围,因此您需要为上面的实现关闭和取消策略。如果一个段的处理失败,则可能导致整个队列失败。

作为替代方法,我可以建议将您的自定义列表从作者推广到下一步,如官方文档中所述passingDataToFutureSteps