On Wed, Mar 6, 2013 at 1:05 PM, Jean Francois LE BESCONT <jflebesc...@gmail.com> wrote: > When we do an enrich, the *resourceUri ( in my example *.enrich("direct:ds", > new AggregationStrategyRessource())) is called every time. > > When I parse a file, big query with all the datasource while be called > every, is there a trick to tell the route to execute only one ? I have > watch camel cache but I have understand that it is used for something else. > > Thanks ! >
You can use a filter / content based route and only use the enrich the 1st time. When you use the splitter the exchange has a property with the split index, so the 1st time the index is zero. The key for that property is Exchange.SPLIT_INDEX > > > > 2013/3/6 Jean Francois LE BESCONT <jflebesc...@gmail.com> > >> Thanks Claus for the link ( have you an HashMap off the FAQ in the head ? >> :) >> >> Don't forget to add : >> >> >> original.getOut().setHeaders(original.getIn().getHeaders()); >> >> >> When enrich with strategy ! >> >> >> 2013/3/6 Claus Ibsen <claus.ib...@gmail.com> >> >>> On Wed, Mar 6, 2013 at 10:26 AM, Jean Francois LE BESCONT >>> <jflebesc...@gmail.com> wrote: >>> > My mistake ...I used resource.getOut().getBody(); instead >>> > od resource.getIn().getBody(); >>> > >>> >>> Yeah see this FAQ >>> http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html >>> >>> > >>> > public Exchange aggregate(Exchange original, Exchange resource) { >>> > >>> > AED originalBody = (AED)original.getIn().getBody(); >>> > Object resourceResponse = (Object) resource.getIn().getBody(); >>> > >>> > LOG.info("originalBody " + originalBody ) ; >>> > LOG.info("resourceResponse " + resourceResponse ) ; >>> > // do stuff with >>> > >>> > return resource; >>> > } >>> > >>> > Thanks raul for the help ! :) >>> > >>> > >>> > 2013/3/6 Jean Francois LE BESCONT <jflebesc...@gmail.com> >>> > >>> >> Thanks Raul ! >>> >> >>> >> I haven't found simple example enrich here ( >>> >> http://camel.apache.org/content-enricher.html, direct:resource in >>> never >>> >> explains ). Perharps that I haven't understand fondamental but it's a >>> >> huge framework and learning needs time :) >>> >> >>> >> So I have a querie : >>> >> >>> >> from("direct:refreshReferentielDynamic") >>> >> .setBody(constant("SELECT * FROM TEST")) >>> >> .to("jdbc:dataSource") >>> >> .to("direct:ds") >>> >> .end(); >>> >> >>> >> Plus : >>> >> >>> >> from("direct:ds").to("log:dans.directds").end(); >>> >> >>> >> Otherwise it doesn't works. >>> >> >>> >> >>> >> And an " main route " : >>> >> >>> >> from("file://....") >>> >> .split() >>> >> .tokenize("\n") >>> >> .enrich("direct:ds", new AggregationStrategyRessource()) >>> >> >>> >> With : >>> >> >>> >> >>> >> public class AggregationStrategyRessource implements >>> AggregationStrategy { >>> >> >>> >> >>> >> public Exchange aggregate(Exchange original, Exchange resource) { >>> >> >>> >> return resource; // for the moment >>> >> } >>> >> >>> >> } >>> >> >>> >> But original is always null ... >>> >> >>> >> Do you see with ? >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> 2013/3/6 Jean Francois LE BESCONT <jflebesc...@gmail.com> >>> >> >>> >>> Hey ! >>> >>> >>> >>> A picture is sometime better than explication :) I try to make a >>> really >>> >>> simple test ( equivalent of MAP with lookup in ETL) : >>> >>> >>> >>> >>> >>> ------------------------- >>> >>> | TABLE TEST | >>> >>> ------------------------- >>> >>> | COL1 | COL2 | >>> >>> | jack | 2 | >>> >>> | bob | 3 | >>> >>> ------------------------ >>> >>> | >>> >>> | >>> >>> | >>> >>> | >>> >>> | >>> >>> ---------------- ---------------------- >>> >>> ------------------------ >>> >>> | FILE INPUT | | ENRICH ? | >>> >>> | FILE OUTPUT | >>> >>> ---------------- ---------------------- >>> >>> ----------------------- >>> >>> | jack | cool | >>>>>>>>> | | >>>>>>>>> | >>> jack >>> >>> | cool | 2 | >>> >>> | bob | foo | | | >>> >>> | bob | foo | 3 | >>> >>> ---------------- ----------------------- >>> >>> ------------------------ >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> 2013/3/6 Jean Francois LE BESCONT <jflebesc...@gmail.com> >>> >>> >>> >>>> If i do: >>> >>>> public class AggregationStrategyRessource implements >>> AggregationStrategy >>> >>>> { >>> >>>> >>> >>>> @Override >>> >>>> public Exchange aggregate(Exchange original, Exchange resource) { >>> >>>> int i = 1 / 0; >>> >>>> return original; >>> >>>> } >>> >>>> } >>> >>>> >>> >>>> no exception are thows. >>> >>>> >>> >>>> >>> >>>> >>> >>>> 2013/3/6 Jean Francois LE BESCONT <jflebesc...@gmail.com> >>> >>>> >>> >>>>> thks Raul >>> >>>>> >>> >>>>> For the moment it's a simple : >>> >>>>> >>> >>>>> public class AggregationStrategyRessource implements >>> >>>>> AggregationStrategy { >>> >>>>> >>> >>>>> @Override >>> >>>>> public Exchange aggregate(Exchange original, Exchange resource) >>> { >>> >>>>> return original; >>> >>>>> } >>> >>>>> >>> >>>>> } >>> >>>>> >>> >>>>> If I put a debug point on it, it is never fired .... >>> >>>>> >>> >>>>> >>> >>>>> >>> >>>>> >>> >>>>> >>> >>>>> 2013/3/6 Raúl Kripalani <r...@evosent.com> >>> >>>>> >>> >>>>>> Can we see the code of AggregationStrategyRessource? >>> >>>>>> >>> >>>>>> Regards, >>> >>>>>> Raúl. >>> >>>>>> >>> >>>>>> On Mar 5, 2013, at 23:30, Jean Francois LE BESCONT wrote: >>> >>>>>> >>> >>>>>> > Hey, >>> >>>>>> > >>> >>>>>> > I have this > >>> >>>>>> > >>> >>>>>> >>> http://camel.465427.n5.nabble.com/Enrich-message-with-data-from-dynamic-sql-query-td5329427.html >>> >>>>>> > >>> >>>>>> > But I haven't found a solution to my question. >>> >>>>>> > >>> >>>>>> > How can enrich my stream with data from a queries ? >>> >>>>>> > >>> >>>>>> > I have a a route called from the start : >>> >>>>>> > >>> >>>>>> > from("direct:refreshReferentielDynamic") >>> >>>>>> > // >>> >>>>>> > .setBody(constant("SELECT * FROM TEST")) >>> >>>>>> > // >>> >>>>>> > .to("jdbc:dataSource") >>> >>>>>> > // >>> >>>>>> > .to("direct:ds") >>> >>>>>> > // >>> >>>>>> > .end(); >>> >>>>>> > >>> >>>>>> > >>> >>>>>> > End I would like to acces data in memory in direct:ds from an >>> other >>> >>>>>> route. >>> >>>>>> > I have try this : >>> >>>>>> > >>> >>>>>> > from("foo"). >>> >>>>>> > [...] >>> >>>>>> > .enrich("direct:ds", new AggregationStrategyRessource()) >>> >>>>>> > >>> >>>>>> > But code in AggregationStrategyRessource is not called ... and >>> body >>> >>>>>> is >>> >>>>>> > replace by the content of the query. >>> >>>>>> > >>> >>>>>> > Thks ! >>> >>>>>> > >>> >>>>>> > Thks ! >>> >>>>>> >>> >>>>>> >>> >>>>> >>> >>>> >>> >>> >>> >> >>> >>> >>> >>> -- >>> Claus Ibsen >>> ----------------- >>> Red Hat, Inc. >>> FuseSource is now part of Red Hat >>> Email: cib...@redhat.com >>> Web: http://fusesource.com >>> Twitter: davsclaus >>> Blog: http://davsclaus.com >>> Author of Camel in Action: http://www.manning.com/ibsen >>> >> >> -- Claus Ibsen ----------------- Red Hat, Inc. FuseSource is now part of Red Hat Email: cib...@redhat.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen