我们在应用程序中使用带有JBOSS保险丝的apache骆驼进行集成。我们已经在一个捆绑包中构建了将近80个API,并且骆驼上下文包含100多个路由。
当我们将捆绑软件部署在JBOSS保险丝上时,所有到达UP的路由都需要花费近1个小时才能运行,而部署1小时后捆绑软件就会“启动”。 我们可以将捆绑软件分为几部分,让我们说每个捆绑软件最多包含10个API,但是我们已经在一个捆绑软件中开发了我们的应用程序,并且它花费了大量的启动时间。
除了将捆绑包分成较小的捆绑包以外,是否有其他方法可以减少捆绑包“启动”的时间?
谢谢。
答案 0 :(得分:0)
首先应注意的是-这是一种反模式,决不能重复(看看刚刚由Google帮忙找到这篇文章的Camel开发人员)。
Karaf / JBoss Fuse绝对可以将每个实例的路由扩展到100条(我已经成功地在一个实例中运行了500条路由),但是不建议将100条变化的路由捆绑在一起。您将失去大量的流程控制,启动顺序管理以及灵活性,无法根据需要将部署调整为多个容器。
您将需要研究路由的某种异步启动。在所有OSGi组件(包括包激活器,spring描述符,scr组件和蓝图描述符)都处于活动状态之前,bundle才会处于活动状态。
如果您的路由是JMS使用者,请查看“ asyncStartListener”和“ asyncStopListener”选项。
另一种选择是禁用在捆绑激活时启动路由,允许捆绑激活,然后让另一个进程(以线程方式)通过,并开始在所有路由上调用route.start()。 / p>