Apache Camel - Endpoint

Abbiamo appreso come appaiono gli endpoint nel nostro codice di integrazione. Le espressioni che abbiamo usato finora comefile:/order, jms:orderQueue, direct:distributeOrderDSLsono gli endpoint. Come puoi vedere, seguono i formati delle specifiche URI. Durante la valutazione di questo URI, ilCamelContext crea il file Endpointesempio; non devi preoccuparti di creare un'istanzaEndpoint implementazione nel tuo DSL.

Prendendo i nostri esempi precedenti, specifichi gli endpoint in Java DSL come qui -

from ("file:/order").to("jms:orderQueue");

E in primavera come qui -

<route>
   <from uri = "file:/order"/>
   <to uri = "jms:orderQueue"/>
</route>

In entrambi i casi, l'endpoint è una stringa costante. In alcuni casi, potresti voler costruire questa stringa in fase di esecuzione. Puoi farlo usando JavaStringmetodi di formattazione. Camel fornisce un altro approccio più semplice per creare queste stringhe URI in fase di esecuzione. A tal fine, Camel forniscefromF e toFmetodi che accettano gli argomenti con i parametri specificati dall'utente. La seguente dichiarazione illustra l'uso ditoF metodo -

from("direct:distributeOrderDSL”).toF("file://%s?fileName=%s", path, name);

A causa di questi metodi, la necessità di utilizzare Java integrato String metodi di formattazione è ovviata.

Camel utilizza il linguaggio semplice per impostazione predefinita per calcolare l'espressione dell'endpoint. IlSimple il linguaggio è stato progettato principalmente per valutare Expressions e Predicatessenza preoccuparsi molto delle complessità di XPath. Per valutare i predicati, puoi combinare un'altra lingua comexpath con il valore predefinito Simplelinguaggio. Questo viene fatto usando il segno più per separare l'altra lingua. Lo snippet di codice qui mostra come concatenarexpath stringa all'espressione scritta in Simple.

from("direct:start")
.toD("jms:${orderQueue}+language:xpath:/order/@id");

Nel Spring, puoi ottenere lo stesso risultato qui -

<route>
   <from uri = "direct:start"/>
   <toD uri = "jms:${orderQueue}+language:xpath:/order/@id"/>
</route>

Puoi concatenare tutte le lingue che desideri, ciascuna separata con un segno più dalla precedente. L'elenco delle lingue supportate può essere trovato qui .