2013-05-13 145 views
0

我使用Apache camel来实现调度器EIP。队列中有数千条消息需要在不同的URL上传递。每封邮件都有自己的发送URL和发送协议(ftp,email,http等)。Apache Camel缓慢启动路由

它已经实现方式:

  • 启动一个骆驼语境,上下文是JMX残疾人和 loadStatisticsEnabled设置为false在ManagementStrategy。由于在2.11.0版本中解决了jira问题中提到的 ,因此禁用 后台管理线程创建。
  • 对于正在构建路由的每条消息,消息正在被推送到路由以进行传送。
  • 消息处理完成后,路由关闭,并从 上下文中删除。

通过使用200个调度程序组件的线程进行小型性能测试,每个调度程序组件都有相同的上下文。 观察到启动路线的时间增加到最多60秒,而处理时间以毫秒为单位。

问题CAMEL-5675提到这个问题已得到解决,但仍然观察到启动路线需要花费大量时间。 https://issues.apache.org/jira/browse/CAMEL-5675

正被创建用于HTTP的路线是

from("direct:"+dispatchItem.getID()) 
.toF("%s?httpClient.soTimeout=%s&disableStreamCache=true", dispatchItem.getEndPointURL(),timeOutInMillis); 

每个dispatchItem具有唯一的ID。

回答