2016-10-12 2 views
0

Rest WebService를 폴링 할 수 있어야하며 해당 호출의 일부로 WebService의 마지막 응답 ID를 전달해야합니다. Camel에서 동적 엔드 포인트를 사용하려면 Enrich 프로세서를 사용해야하지만 업데이트를 할 수 없다는 점을 알고 있습니다.Apache Camel Dynamic Http 호출

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(); 
    } 

} 

나는 낙타 2.16을 사용하고 있습니다 :

는 다음과 같은 간단한 경우를 고려하십시오.

도움을 주시면 감사하겠습니다. 사전에

감사합니다,

크리스

+0

그럼, 어떤 오류가 발생합니까? –

답변

1

구성 방법은 낙타 경로를 생성하는 동안 한 번 호출됩니다, 그래서 당신은 각 통화에 대한 URI를 구축 할 + id을 사용할 수 없습니다. 대신 java 메소드 호출을 사용하여 uri 동적을 빌드하십시오. 경로 빌더 클래스 곳에서하는 방법 calculateUri를 추가 한 후

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

을 그리고 :

그리고 당신이 사용하는 URI를 계산하는 메서드 호출을 할 수있는 동적 단지 일반 recipientList에 의해 enrich을 사용하지 말아 당신이 사용하는 uri를 반환

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