Apache Camel动态Http调用

时间:2016-10-12 05:29:46

标签: rest apache-camel

我需要能够轮询Rest WebService,并且作为该调用的一部分传递来自WebService的最后一个响应的id。我知道要在Camel中使用动态端点,您需要使用Enrich处理器,但我无法进行更新。

请考虑以下简单案例:

public class MyRoute extends RouteBuilder {

long id;

@Override
public void configure() throws Exception {

    from("timer://foo?fixedRate=true&period=3000")
            .enrich().simple("http://localhost:8080/TestRestSource/test/result/" + id)
            .process(new Processor() {
                @Override
                public void process(Exchange exchange) throws Exception {
                    id++;
                    System.out.println("--- " + id);
                }
            })
            .end();
    }

}

我正在使用Camel 2.16。

任何帮助都将不胜感激。

提前致谢,

克里斯

1 个答案:

答案 0 :(得分:1)

配置方法仅在创建Camel路由期间调用一次,因此您无法使用+ id为每个调用构建uri。而是使用java方法调用来构建uri动态。

并且不要只使用enrich作为动态的recipientList,您可以在其中执行计算要使用的uri的方法调用:

from("timer:...").
  recipientList(method(MyRoute.class, "calculateUri"))

然后在路径构建器类中添加一个方法calculateUri,在该类中返回要使用的URI

public String calculateUri() {
  return "http:...." + i;
}