动态变化端点骆驼

时间:2013-03-06 13:34:18

标签: dynamic apache-camel endpoint

是否有可能以动态方式从端点更改? 例如,我想要改变

for(endpointFirst).routeId(ROUTEID).to(finishEndpoint);

for(endpointSecond).routeId(ROUTEID).to(finishEndpoint);

我尝试使用

camelContext.stopRoute(TestRoute.ROUTEID);

将旧端点更改为新端点

camelContext.startRoute(TestRoute.ROUTEID);

但我的努力不能正常运作。

感谢您的帮助

2 个答案:

答案 0 :(得分:6)

你需要

  1. 停止路线
  2. 删除路线
  3. 更改端点
  4. 添加路线
  5. 启动路线
  6. 这允许您将从端点更改为您想要的任何内容(例如其他内容)

    某些组件/端点允许更改选项以及在运行时更新的选项。例如,JMS端点允许这样做,所以你可以

    1. 停止路线
    2. 更改jms端点上的选项
    3. 启动路线
    4. 但可能有一些组件无法做到这一点。

答案 1 :(得分:1)

要更改from端点,您可以通过上下文API动态添加/删除路由,或者像克劳斯建议的那样更改路径

更改目标端点,使用recipient list EIP和Expression根据消息头,变量,方法等动态确定端点...

from("direct:a")
     .recipientList(header("foo"));