Apache Camel上下文删除路由定义方法

时间:2018-07-05 11:27:23

标签: java apache-camel

作为项目要求的一部分,我正在经历Apache Camel Docs,以便在更新之前从骆驼上下文中删除路由。

在这里,我对removeRouteDefinition感到困惑,后者从CamelContext中删除了路由定义-停止了所有先前运行的路由,而removeRoutestopRoute则与以前的工作相同。

这两种方法到底有什么区别?

2 个答案:

答案 0 :(得分:2)

主要区别在于,CamelContext#removeRouteDefinition会正常停止路由,然后将其从Context中删除。

方法CamelContext#removeRoute只能删除停止的路由。如果您尝试删除正在运行的路线,则该方法返回false,并且什么也没有发生。

这两个片段是等效的:

删除路线定义

getContext().removeRouteDefinition(getContext().getRouteDefinition("routeId"));

删除路线

getContext().stopRoute("routeId");
getContext().removeRoute("routeId");

答案 1 :(得分:1)

从文档中可以看到

void removeRouteDefinition(RouteDefinition routeDefinition)

以RouteDefinition对象作为参数。

boolean removeRoute(String routeId) throws Exception

采用routeId。

另一个重要的事情是removeRouteDefinition已过时。