Camel Splitter并行处理数组列表 – 并发访问问题
使用Camel拆分ArrayList并并行处理每个项目最多10个线程。 以下是配置。 线程池配置文件设置为最大线程数= 10。
${body} java.lang.Exception true
bean:reportRepository?method=getPendingTransactions
获取ArrayList并传递给Splitter。
processReportChannel
是处理项目的处理器。
问题:作业启动时它会启动10个线程,但有些线程正在拾取相同的项目。 例如,如果我在ArrayList,thread_no_1和thread_no_2中有item_no_1到10,或者有时候更multithreading正在拾取,那么就说item_no_2。 是因为Array List不是线程安全的,Splitter不管理它吗?
我不是这方面的专家,需要帮助指出问题所在。
我测试了以下(更简单)设置:
${body}
测试:
List
使用此设置,没有任何条目处理两次。 因此,处理器中必定存在导致问题的内容,即多个线程会拾取相同的列表项。