在从 Apache Camel 3 迁移到版本 4 时,我遇到了这样一个事实:adapt() 方法已从 Camel 上下文中删除,并且不再可能适应 ModelCamelContext
ModelCamelContext modelContext = context.adapt(ModelCamelContext.class);
RouteDefinition route = modelContext.getRouteDefinition(routeId);
官方迁移指南只提到了这一点
用 getCamelContextExtension 替换了 org.apache.camel.CamelContext 中的 Adapt()
但遗憾的是没有详细说明 API 如何兼容。我正在努力解决一个需要动态操作路由定义的用例,这对于旧的 ModelCamelContext 方法来说相当简单。 我需要获取路由定义,将其从上下文中删除,再次添加不同的路由并在其上操作输出(getOutputs 方法)。
有什么想法可以在 Apache Camel 版本 4 中实现这一点吗?
Camel 迁移指南 https://camel.apache.org/manual/camel-4-migration-guide.html 提到以下一段迁移代码:
Removed getExtension from the interface CamelContext
Use getCamelContextExtension instead. For example ManagedCamelContext managed = context.getCamelContextExtension().getContextPlugin(ManagedCamelContext.class);
基于此,我们能够通过以下方式获得模型扩展:
var model = context.getCamelContextExtension().getContextPlugin(Model.class);