如何扩展Hibernate读者?

时间:2012-10-04 10:30:03

标签: java multithreading spring-batch

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

  • HibernatePagingItemReader
  • 自定义处理器:根据来自HibernatePagingItemReader
  • 的数据执行Web服务查询
  • 自定义编剧

瓶颈是我的处理器,因为webservice查询速度很慢,而且可以很容易地进行小规模化。

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

Spring docs说,读者不是现成的可扩展的,但我的需求更简单。 读者提取的每条记录都是独立的,所以我可以平行执行读者。

我的问题是:

  • 读者如何在多线程环境中执行?它们是并行化的,还是将数据分配给并行读者?
  • 如果读者是并行化的,我认为我应该有更少的记录(设置maxItemCount)来将这些记录分发给处理器

任何其他扩大规模的想法?

1 个答案:

答案 0 :(得分:0)

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