【发布时间】:2014-03-27 02:53:05
【问题描述】:
我正在使用具有并行处理功能的 Camel Split 组件来拆分整数的 ArrayList。该列表中有 700,000 多个 ID。这个想法是每个 ID 都需要传递给 XML 生成器,然后插入到数据库表中。但是,我注意到在消息正文中生成并传递回 Camel 的 XML 似乎被保留了。看起来它会保留消息正文,直到拆分中的所有元素都完成处理。这意味着我将在内存中拥有 700,000 多个 XML。有没有办法告诉骆驼不要这样做?要在 Split 工作人员完成工作后丢弃它?
我尝试过制作 ID 块并拆分每个块,以便完成拆分并释放内存。这里的问题是每个 ID 都会生成不同大小的 XML。因此,如果我创建了 10 个 ID 的块,其中 1 个与一个非常大的 XML 相关联,我的线程池必须等待最大的一个完成,我最终会得到 9 个空闲线程。
【问题讨论】:
标签: java multithreading split apache-camel