【问题标题】:Apache Camel Dynamic Http callApache Camel 动态 Http 调用
【发布时间】:2016-10-12 05:29:45
【问题描述】:

我需要能够轮询 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。

任何帮助将不胜感激。

提前致谢,

克里斯

【问题讨论】:

  • 那么,你得到了什么错误?

标签: rest apache-camel


【解决方案1】:

configure 方法在创建 Camel 路由时只调用一次,因此您不能使用+ id 为每个调用构建 uri。而是使用 java 方法调用来构建 uri 动态。

不要只使用enrich,而是使用动态的普通recipientList,您可以在其中进行计算要使用的uri的方法调用:

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

然后在路由生成器类中添加一个方法calculateUri,您可以在其中返回要使用的uri

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

【讨论】:

  • 如何传递响应并从响应中获取输入 i 作为示例?谢谢
猜你喜欢
  • 2018-07-01
  • 1970-01-01
  • 2011-08-08
  • 2014-02-26
  • 2019-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多