如何在Apache Camel中处理大型XML?

时间:2015-06-13 06:41:02

标签: java xml apache-camel

我正在使用Apache Camel 2.14.0版本。 我创建了一个路由来轮询包含XML的目录,然后将其传递给activeMQ代理。

OutOfMemoryError

它适用于小型XML(最多20Mb),但如果文件大小更多,则会提供from("file://D:/test?sortBy=file:modified&include=test_.*.xml$&noop=true").split(body().tokenizeXML("ship", "ships")).streaming().to("activemq:queue:temp.XMLFileQueue");

为避免这种情况,我改变了以下路线

FileNotFoundException

执行此操作后,我看到Camel正在创建多个线程来处理每个块,因此我面临一些新问题。在处理XML之后,根据我的逻辑,它应该被删除 - 之前它是单线程,所以它很好,但现在由于许多线程,1个线程删除该文件,但另一个线程仍然尝试处理该文件并抛出{{ 1}}。

如何避免这种情况?请让我知道使用单线程处理大型XML的正确方法。

0 个答案:

没有答案