2016-11-30 2 views
1

Ich habe vor kurzem Java-Code übernommen und es gab eine Methode, die ein Objekt aufgenommen hat und basierend auf einigen Eigenschaften dieses Objekts eine Verarbeitung für dieses Objekt ausgeführt hat.Führe direkt eine Kamelroute aus

Ich spielte mit Apache Camel herum und konnte eine Route definieren, die dieselbe Aufgabe erfüllte. Wo ich kämpfe ist, wie kann ich den einfachsten Weg finden, ein Objekt an die Route zu übergeben und die Logik auszuführen? Was ich jetzt haben, ist ein

producerTemplate.sendBody("direct:blah", myObject) 

und die Route selbst definiert eine

from("direct:blah").process(...) 

Die oben funktioniert gut, wenn auch etwas langsamer als zuvor.

Ist dies der einfachste Weg, um die Logik einer Methode zu ersetzen? Ich hatte gehofft, ich könnte einfach die Route selbst nehmen und ein Objekt zur Ausführung übergeben, aber ich sehe keine Möglichkeit, dies zu tun.

Antwort

1

Sie benötigen nicht unbedingt eine from().process(). Sie können Ihrer Methode auch einen Endpunkt injizieren. Zum Beispiel:

@Consume(uri = "direct:blah") 
public void onFileSendToQueue(String body, @Header("CamelFileName") String name) { 
    LOG.info("Incoming file: {}", name); 
    producer.sendBody(body); 
} 

Sie können das gleiche auch für Produzenten tun. Weitere Informationen finden Sie in der Camel pojo messaging. http://camel.apache.org/pojo-messaging-example.html

Verwandte Themen