Apache Camel拆分大文件

时间:2018-07-10 21:25:20

标签: apache-camel activemq

我有一个骆驼路线,需要将一个大文件(600k行ID)分割成600k条单独的消息,然后将它们推送到Activemq队列中。如何优化骆驼方面的路线以增加吞吐量?我目前达到AMQ的〜150消息/秒吞吐量。这是当前路线的样子。任何建议表示赞赏!

from("file://directory")
  .split().jsonpath("$.ids").streaming().parallelProcessing()
  .log(LoggingLevel.INFO, "Split: ${body}")
  .to("activemq:queue:myqueue");

1 个答案:

答案 0 :(得分:1)

首先,如@Bedla所指出的那样,汇集您的连接(即,将连接工厂包装在org.apache.activemq.pool.PooledConnectionFactory中)!根据网络条件,消息大小等,它很可能使您的吞吐量提高x10到x100。对于较小的消息,更多。

然后,当寻找吞吐量时,将60万行的每一行都转储到您的日志文件中将无济于事。删除它或至少使其处于跟踪/调试级别。

如果您的代理人位于其他地方,例如世界的其他地方,或者通常是网络延迟较差的地方,请考虑对ConnectionFactory设置使用异步调度。它不会等待对发送的每个消息的确认往返。

然后,最后,如果以上方法均未提供令人满意的结果(我认为只是池应做),请关闭消息持久性。对于低规格/旧服务器,代理磁盘可能是瓶颈。甚至进行了一些调整,以增强某些OS /存储组合的性能。