在准备发布 Camel 4.0 时,我正在尝试找到一种方法来迁移我的方法,这些方法从 XML 文件创建
Route
或 RouteDefinition
对象,其路由如下所示:
<routes xmlns="http://camel.apache.org/schema/spring" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring-3.20.2.xsd">
<route id=....>
......
</route>
</routes>
这样它们就可以加载到 CamelContext 中
在 Camel 3.20 中,我将它们加载到 CamelContext 中,就像
String xmlContent = myBean.getXMLFileContent();//imagine this string's content is as described above
//I am open to converting this string into a java.io.File and new methodologies that the Camel team is leaning towards
try (InputStream is = new ByteArrayInputStream(xmlContent.getBytes())) {
XMLRoutesDefinitionLoader loader = extendedCamelContext.getXMLRoutesDefinitionLoader();
RoutesDefinition routesDefinition = (RoutesDefinition) loader.loadRoutesDefinition(camelContext, is);
modelCamelContext.addRouteDefinitions(routesDefinition.getRoutes());
}
通过导入
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-xml-io</artifactId>
<version>${camel.version}</version>
</dependency>
我遇到了同样的问题,对我来说,通过添加整个 Spring Boot 启动依赖项解决了这个问题。好像有些课程改变了。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-xml-starter</artifactId>
</dependency>
你能尝试一下吗?