apache-camel - Apache Camel 拆分大文件

标签 apache-camel activemq

我有一个 Camel 路由,需要将一个大文件(60 万行 ID)拆分为 60 万条单独的消息,然后将它们推送到 Activemq 队列中。如何优化 Camel 端的路由以提高吞吐量?我目前正在实现 ~150 条消息/秒的 AMQ 吞吐量。这是路线目前的样子。任何建议表示赞赏!

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

最佳答案

首先,正如@Bedla 所指出的,池化您的连接(即将您的连接工厂包装在 org.apache.activemq.pool.PooledConnectionFactory 中)。!根据网络条件、消息大小等,它很可能会给您带来 x10 到 x100 范围内的吞吐量提升。对于较小的消息则更多。

然后,在寻找吞吐量时,将 600k 行中的每一行都转储到日志文件中对任何人都没有好处。将其删除或至少将其置于跟踪/调试级别。

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

然后最后,如果以上都没有给出像样的结果(我认为只有一个池应该这样做)关闭消息持久性。代理磁盘可能是低规范/旧服务器的瓶颈。甚至还进行了调整以增强某些操作系统/存储组合的性能。

关于apache-camel - Apache Camel 拆分大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51274110/

相关文章:

apache-camel - Camel ActiveMQ 客户端阻塞,临时存储使用率立即达到 100%

java - ActiveMQ 上的重复消息

jms - ActiveMQ - 通过命令行删除/清除所有队列

activemq - 虚拟主题/队列和持久性

java - Camel : keep a file to folder depended on response

java - 如何使用apachecamel仅删除ftp服务器上已处理的文件

java - 传播异常以丰富路由

perl - 如何将事务与 Stomp 和 ActiveMQ(和 Perl)一起使用?

java - ApacheActiveMQ 和 ApacheActiveMQApollo 的区别

web-services - 无法识别 Soap 请求消息部分