Java 如何扩展Hibernate阅读器?

Java 如何扩展Hibernate阅读器?,java,multithreading,spring-batch,Java,Multithreading,Spring Batch,我正在尝试扩展一个相当简单的Springbatch tasklet。 情况如下: HibernatePagingItemReader 自定义处理器:基于HibernatePagingItemReader中的数据执行webservice查询 自定义编写器 瓶颈是我的处理器,因为webservice查询速度慢,而且很容易被并行化 我在tasklet上添加了一个任务执行器(org.springframework.scheduling.concurrent.ThreadPoolTaskExecuto

我正在尝试扩展一个相当简单的Springbatch tasklet。 情况如下:

  • HibernatePagingItemReader
  • 自定义处理器:基于HibernatePagingItemReader中的数据执行webservice查询
  • 自定义编写器
瓶颈是我的处理器,因为webservice查询速度慢,而且很容易被并行化

我在tasklet上添加了一个任务执行器(org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor),但它并不是线性扩展的:超过5个线程,总执行时间是相同的

SpringDocs说阅读器不是现成的可扩展的,但我的需求要简单得多。 读卡器获取的每个记录都是独立的,因此我可以并行执行读卡器

我的问题是:

  • 如何在多线程上下文中执行读卡器?它们是并行化的,还是将数据分发给并行化的读卡器
  • 如果读取器被并行化,我会认为我应该拥有较少的记录(设置maxItemCount)来将这些记录分发给处理器

有没有其他的想法来扩展它?

通常,任何类型的批处理库都会为用于并行工作的线程池定义一个上限。
根据你的描述,听起来你达到了上限。尝试增加它。

谢谢您的评论,但这是我的问题:增加线程数并不会减少执行的总时间(从5个线程开始)。我觉得瓶颈是读者。我在想怎么做。