Apache camel直接在camel-main中使用经典的xml配置以独立运行



在Apache Camel 3.17+中,是否有一种方法可以直接包含xml DSL路由定义,以便我可以在独立运行。

使用JAVA DSL,可以使用addRoutesBuilders()将JAVA路由配置添加到Main()上下文中,如下面的示例所示。

我想把xml上下文直接添加到Main().

public class MainApp {
public static void main(String... args) throws Exception {
Main main = new Main();
main.configure().addRoutesBuilder(new MyRouteBuilder());
main.run(args);
}
}
public class MyRouteBuilder extends RouteBuilder {
public void configure() {
from("direct:start")
.to("mock:result");
}
}

是否可以使用camel-main的路由定义在基于xml的DSL使用camelContext标签?

下面是示例xml
<!-- spring xmlns added removed here for make the xml brief -->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"....
<camelContext xmlns = "http://camel.apache.org/schema/spring">
<route>
<from uri = "direct:input"/>
<log message = "log message for demo"/>
<to uri = "file:src/main/resources/data/"/>
</route>
</camelContext>

我们可以在pom.xml中使用下面的依赖项。

  • camel-spring-xml&
  • camel-spring-main
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-main</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
</dependency>
  • MainApp.java

import org.apache.camel.spring.Main;
public class MainApp {
public static void main(String... args) throws Exception {
Main main = new Main();
main.run(args);
}
}
  • 通过在resources/META-INF/spring/*.xml中创建xml来自动扫描基于spring bean的配置。

最新更新