1ST PYTANIE:Camel - zawartość enricher: wzbogacić() vs pollEnrich()
nie jestem w stanie naprawdę zrozumieć różnicę między enrich()
i pollEnrich()
. Być może określenia, których używa Camel, nie są tak wspaniałe.
czytałem tutaj: http://camel.apache.org/content-enricher.html
Content wzbogacenie przy użyciu elementu Enrich DSL
Camel pochodzi z dwóch smakach zawartości enricher w DSL
- wzbogacić
- pollEnrich
Enrich używa producenta, aby uzyskać dodatkowe dane. Zwykle jest to używane do przesyłania komunikatów żądania odpowiedzi, na przykład w celu wywołania zewnętrznej usługi WWW . Z drugiej strony pollEnrich używa An Polling Consumer do , aby uzyskać dodatkowe dane. Jest zwykle używany do przesyłania komunikatów o zdarzeniach , na przykład do odczytu pliku lub pobrania pliku FTP.
Nie rozumiem, na czym polega różnica. Obaj wydają się otrzymywać dodatkowe dane (odpowiedź usługi sieci Web, plik FTP), wykorzystując go. Dlaczego więc twierdzą, że odpowiedź usługi sieciowej została wykonana przez "producenta"?
2ND PYTANIE:
W "Camel w akcji" Książka p. 72 mówią:
wzbogacić i pollEnrich nie może uzyskać dostęp do informacji w bieżącej wymiany
Ani wzbogacić ani pollEnrich może wykorzystać wszelkie informacje z bieżącej wymiany. Oznacza to na przykład, że nie można przechowywać nagłówka pliku na giełdzie dla pollEnrich, aby można go było użyć do wybrania określonego pliku. Może się to zmienić w przyszłości, jeśli zespół Camel znajdzie rozwiązanie.
jednak dają przykład kodu podobnego do następującego, za wdrażanie strategii agregacji:
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;
}
}
W tym przykładzie widzę, że mają dostęp do Exchange original
, nie jest to „bieżący wymiana "? Jeśli nie, to jaka jest wymiana "oryginalnej wymiany"? Co one oznaczają przez "bieżącą wymianę"?