it-swarm.com.de

Apache Camel: Endpunkt "direkt: Start" - was bedeutet das?

Ich bin neu bei Apache Camel. Kann jemand erklären, was "direkt: Start" in Camel bedeutet. Bitte sehen Sie 

http://camel.Apache.org/http

from("direct:start")
.to("http://myhost/mypath");

Vielen Dank. 

39
Soumya Simanta

Das obige "Direktstart" besagt lediglich, dass die Route mit einer Direktkomponente namens "Start" beginnt.

Der direkte Endpunkt ermöglicht den synchronen Aufruf einer Route. Wenn Sie eine Exchange an den direkten Endpunkt senden möchten, erstellen Sie eine ProducerTemplate und verwenden die verschiedenen Sendemethoden.

ProducerTemplate template = context.createProducerTemplate();

template.sendBody("direct:start", "This is a test message");

Der Name start ist nichts Besonderes. Es ist einfach der Name, den Sie verwenden möchten, wenn Sie sich auf den Endpunkt beziehen, und er könnte genauso leicht direct:foo gewesen sein.

47
gregwhitaker

Nehmen wir an, die direkte Route als Methode mit dem Namen start, und wir müssen die start-Methode/direkte Route aufrufen, um bestimmte Operationen auszuführen. Das unten stehende Beispiel wird helfen.

Die erste Route wird ausgelöst, wenn eine Eingabedatei an der XXXX-Position verfügbar ist und wenn sie die Zeile erreicht, wird der tatsächliche Fluss auf die zweite Route verschoben. Grundsätzlich wird die direkte Route mit Endpunkt von einem Produzentenendpunkt ausgelöst.

<route id="fileRoute">
   <from uri="file:XXXX">
      ..
   <to uri="direct:start">
</route>

<route id="directStartRoute">
    <from uri="direct:start">
    <to uri="http://myhost/mypath">
</route>
6
selva

Apache Camel direct ist grundsätzlich für das Senden von Exchange von einer Route zu einer anderen im SAME Camel-Kontext gedacht. Nehmen wir also an, Sie erhalten eine Nachricht von AMQ und möchten für jede Nachricht, die Sie erhalten, Kopfzeilen auffüllen und diese dann an die Mail-Empfängerliste senden. Hier müssen Sie einen neuen Router erstellen, der die folgende Beschreibung enthält

from(“direct:populateHeaders”)
.setHeader(“myHeader”, “myHeaderValue”)
.end()

Und von jeder Route aus können Sie Ihr Exchange-Objekt schriftlich an diese Route senden

...

.to(“direct:populateHeaders”)

...

Es ist wichtig zu wissen, dass dies nicht aus Ihrem Camel-Kontext heraus funktioniert.

4
Arman Tumanyan

direct: start bietet synchrone Kommunikationsmöglichkeiten zwischen zwei Endpunkten. Dies wurde nur verwendet, wenn Sie mit Kamel-Nachrichten und nicht mit generischen Datei- oder XML-Nachrichten kommunizieren möchten.

2
Atul Kumar

Betrachten Sie es so: Es gibt zwei Dinge, wenn Sie eine Nachricht an die Kamelroute senden. 1. Das URI-Schema, das definiert, wie Ihre Nachricht zugestellt wird. Und an welchen Komponententyp wird es geliefert ... 2. URI-Pfad, der die Instanz dieser Komponente definiert.

Nun zu Ihrer direkten: Startposition . 'Direkt' gibt an, dass diese Nachricht synchron an die Direktkomponente gesendet werden soll. _Start 'sagt, welche Instanz der Direktkomponente diese Nachricht übermittelt werden soll.

Wichtigkeit verschiedener URI-Pfade: Überlegen Sie sich nun, ob Sie unterschiedliche Routen benötigen. Und will Nachrichten aus zwei verschiedenen Threads synchron erzeugen. Die Verwendung von "Direkt: Start" als Startpunkt für die Routen funktioniert nicht. Wenn Sie keine bedingte Verarbeitungskomponente haben, vergessen Sie dies nicht, wenn Sie Anfänger sind. Damit die Nachrichten erfolgreich an beide Routen übermittelt werden können, müssen Sie zwei Einträge hinzufügen, d. H. 'Direct: somename1' und 'direct: somename2'. 'start' ist keine verbindliche Sache, Sie können einen beliebigen Namen angeben. 

Ich empfehle Ihnen, einige Kapitel aus Martin Fowlers EIP-Büchern zu lesen. Es ist eine wunderbare Ressource, um damit anzufangen. Dies macht es Ihnen sehr leicht, Camel zu verstehen.

1
Mudassir Rehman

vergiss den Start. start ist nur der Name eines Haltepunkts (direkt).

Eine direkte Komponente kann als Brücke zwischen Routen im selben Kontext dienen.

0
Kumar Aditya