使用camel-spring </to>为一个<to ... =“”>元素定义多个URI

时间:2013-10-18 14:03:09

标签: spring apache-camel

使用Java定义Apache Camel路由,我可以做这样的事情

from("stream:in?promptMessage=Enter something: ")
  .loadBalance()
  .to("uria", "urib")

它就像一个魅力。

使用Spring上下文文件尝试此操作无效:

<c:camelContext id="defaultContext">
  <c:route id="defaultRoute">
    <c:from uri="stream:in?promptMessage=Enter something: "/>
    <c:loadBalance inheritErrorHandler="false">
      <c:to uri="uria, urib"/>
    </c:loadBalance>
    <c:to uri="stream:out"/>
  </c:route>
</c:camelContext>

任何想法,我如何设置每个<c:to ...元素不止一个uri?我不想拥有多个<c:to ...元素。有什么办法,比如说路线工厂通过清单?

我想要实现的原因是什么:我想从配置文件中注入一个URI列表,直接将它们传递给Camel路由。

我正在使用Apache Camel的2.12.1版本。

1 个答案:

答案 0 :(得分:1)

  1. 使用RouteBuilder类创建从某处读取URI的路由。
  2. 使用contextScan将路径构建器类加载到spring camel上下文中。请参阅在apache网站上使用contextScan部分。
  3. RouteBuilder类应为

    @Component
    public class MyRoute extends SpringRouteBuilder {
    
        @Override
        public void configure() throws Exception {
            String URIs = // read all URI's from file or somewhere
            from("direct:start")
               .loadbalance()
               .to(URIs);
        }
    }