1 ° DOMANDA:Camel - arricchimento di contenuti: arricchire() vs pollEnrich()
io non sono in grado di capire veramente la differenza tra enrich()
e pollEnrich()
. Forse i termini usati da Camel non sono così grandi.
che ho letto qui: http://camel.apache.org/content-enricher.html
arricchimento dei contenuti utilizzando l'elemento Enrich DSL
cammello viene fornito con due gusti di arricchimento contenuti nel DSL
- arricchire
- pollEnrich
arricchisce utilizza un produttore per ottenere i dati aggiuntivi. Di solito è utilizzato per la messaggistica di richiesta di risposta, ad esempio per richiamare un servizio Web esterno . pollEnrich d'altra parte utilizza un consumatore Polling su per ottenere i dati aggiuntivi. Viene solitamente utilizzato per messaggi di evento , ad esempio per leggere un file o scaricare un file FTP.
Non capisco qual è la differenza. Entrambi sembrano ottenere i dati aggiuntivi (risposta al servizio Web, file FTP) consumandolo. Quindi perché dicono che ottenere la risposta del servizio Web è fatto da un "produttore"?
DOMANDA 2 °:
Nella "Camel in azione" libro p. 72 dicono:
arricchire e pollEnrich non possono accedere alle informazioni nel cambio
Né arricchire né pollEnrich può sfruttare qualsiasi informazione dallo scambio corrente. Ciò significa, ad esempio, che non è possibile memorizzare un'intestazione del nome file nello scambio per pollEnrich da utilizzare per selezionare un file specifico. Questo potrebbe cambiare in futuro se il team Camel può trovare una soluzione.
Tuttavia danno un esempio di codice simile di seguito, per attuare una strategia di aggregazione:
public class ExampleAggregationStrategy implements AggregationStrategy {
public Exchange aggregate(Exchange original, Exchange resource) {
Object originalBody = original.getIn().getBody();
Object resourceResponse = resource.getIn().getBody();
Object mergeResult = ... // combine original body and resource response
if (original.getPattern().isOutCapable()) {
original.getOut().setBody(mergeResult);
} else {
original.getIn().setBody(mergeResult);
}
return original;
}
}
In questo esempio vedere che hanno accesso al Exchange original
, non è il "cambio corrente "? Se no, allora quale scambio rappresenta lo "scambio originale"? E cosa intendono con "lo scambio corrente"?