2016-10-12 3 views
0

Ich muss in der Lage sein, einen Rest WebService abzufragen und als Teil dieses Aufrufs in der ID der letzten Antwort vom WebService übergeben. Mir ist bewusst, dass man zur Verwendung dynamischer Endpunkte in Camel einen Enrich-Prozessor verwenden muss, aber ich kann das Update nicht machen.Apache Camel Dynamic Http Anruf

Bitte beachten Sie die folgenden einfachen Fall:

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

} 

Ich bin mit Camel 2,16.

Jede Hilfe wäre willkommen.

Vielen Dank im Voraus,

Chris

+0

Also, welchen Fehler bekommen Sie? –

Antwort

1

Die configure-Methode wird während der Erstellung der Kamelrouten nur einmal aufgerufen, so können Sie + id nicht die uri für jeden Anruf zu bauen verwenden. Verwenden Sie stattdessen einen Java-Methodenaufruf, um die URI-Dynamik zu erstellen.

Und nicht enrich verwenden, indem nur ein reines recipientList die dynamisch ist, in dem Sie einen Methodenaufruf tun können, die die uri verwenden berechnet:

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

Und dann fügen Sie eine Methode calculateUri in der Route Builder-Klasse, wo Sie geben die uri zur Verwendung zurück

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