1

在 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 版本。

4

1 回答 1

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

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);
    }
}
于 2013-10-18T14:10:15.220 回答