作为项目要求的一部分,我正在经历Apache Camel Docs,以便在更新之前从骆驼上下文中删除路由。
在这里,我对removeRouteDefinition感到困惑,后者从CamelContext中删除了路由定义-停止了所有先前运行的路由,而removeRoute,stopRoute则与以前的工作相同。
这两种方法到底有什么区别?
答案 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
已过时。