【发布时间】:2017-05-29 15:08:40
【问题描述】:
试图找出之前是否有人问过这个问题,但找不到。
这就是问题所在。以下必须通过 Spring 批处理来实现 有一个文件要读取和处理。项目阅读器不是线程安全的。 计划是让多线程同质处理器和多线程同质写入器注入由单线程读取器读取的项目。
有点像下面:
----------> Processor #1 ----------> Writer #1
|
Reader -------> Processor #2 ----------> Writer #2
|
----------> Processor #3 ----------> Writer #3
尝试了 AsyncItemProcessor 和 AsyncItemWriter,但在处理器上持有调试点导致读取器直到点被释放(即单线程处理)才被执行。
任务执行器尝试如下:
<tasklet task-executor="taskExecutor" throttle-limit="20">
阅读器上的多个线程已启动。
同步阅读器也不起作用。
我试图阅读有关分区器的信息,但它似乎很复杂。
是否有注释将阅读器标记为单线程?将读取数据推送到全局上下文是个好主意吗?
请指导解决方案。
【问题讨论】:
-
为什么分区太复杂了?
-
感谢您的评论。我只有几分钟的时间看它,我读得越多,我就越困惑。我已经端到端地完成了它,它似乎不是我问题的传统解决方案,因为我不想拆分我的输入。我错了吗?
-
SynchronizedItemReader 是最佳解决方案吗?
-
是的,但要确保写作确实是瓶颈。
-
是的,你是对的。首先需要确定瓶颈。
标签: spring-batch