Quantcast

How to aggregate all messages into a single message?

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

How to aggregate all messages into a single message?

arda.aydin
Hi,

I want to use an aggregator in order to aggregate all messages comming.
On my route i'm making a split with a splitter , then i process every messages  in parallel
and then i want to aggregate them all into a single file.

Here is my snippet :


this.from(FROM_FOLDER).split(new LdapEntitySplitExpression()).process(new LdapModifyProcessor()).aggregate(header("LDIFRecord"),new LdapAggregationStrategy()).to(TO_FOLDER);


and inside  LdapModifyProcessor() i do:

exchange.getOut().setHeader("type", "LDIFRecord");

but it does not work.

can anyone tellme how can i let every messages go thru aggregator?

regards.


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: How to aggregate all messages into a single message?

Claus Ibsen-2
Hi

The splitter has build in join so you can do that all together with
the aggregator.

See the "Split aggregate request/reply sample" in
http://camel.apache.org/splitter.html


On Thu, Oct 15, 2009 at 3:01 PM, kodcanavari <[hidden email]> wrote:

>
> Hi,
>
> I want to use an aggregator in order to aggregate all messages comming.
> On my route i'm making a split with a splitter , then i process every
> messages  in parallel
> and then i want to aggregate them all into a single file.
>
> Here is my snippet :
>
>
> this.from(FROM_FOLDER).split(new LdapEntitySplitExpression()).process(new
> LdapModifyProcessor()).aggregate(header("LDIFRecord"),new
> LdapAggregationStrategy()).to(TO_FOLDER);
>
>
> and inside  LdapModifyProcessor() i do:
>
> exchange.getOut().setHeader("type", "LDIFRecord");
>
> but it does not work.
>
> can anyone tellme how can i let every messages go thru aggregator?
>
> regards.
>
>
>
> --
> View this message in context: http://www.nabble.com/How-to-aggregate-all-messages-into-a-single-message--tp25908234p25908234.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>



--
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: How to aggregate all messages into a single message?

Claus Ibsen-2
Ah it should haven been without
    together *with out* the aggregator.



On Thu, Oct 15, 2009 at 3:05 PM, Claus Ibsen <[hidden email]> wrote:

> Hi
>
> The splitter has build in join so you can do that all together with
> the aggregator.
>
> See the "Split aggregate request/reply sample" in
> http://camel.apache.org/splitter.html
>
>
> On Thu, Oct 15, 2009 at 3:01 PM, kodcanavari <[hidden email]> wrote:
>>
>> Hi,
>>
>> I want to use an aggregator in order to aggregate all messages comming.
>> On my route i'm making a split with a splitter , then i process every
>> messages  in parallel
>> and then i want to aggregate them all into a single file.
>>
>> Here is my snippet :
>>
>>
>> this.from(FROM_FOLDER).split(new LdapEntitySplitExpression()).process(new
>> LdapModifyProcessor()).aggregate(header("LDIFRecord"),new
>> LdapAggregationStrategy()).to(TO_FOLDER);
>>
>>
>> and inside  LdapModifyProcessor() i do:
>>
>> exchange.getOut().setHeader("type", "LDIFRecord");
>>
>> but it does not work.
>>
>> can anyone tellme how can i let every messages go thru aggregator?
>>
>> regards.
>>
>>
>>
>> --
>> View this message in context: http://www.nabble.com/How-to-aggregate-all-messages-into-a-single-message--tp25908234p25908234.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>



--
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: How to aggregate all messages into a single message?

dulanov
In reply to this post by arda.aydin
Try to use this.from(FROM_FOLDER).split(new LdapEntitySplitExpression(), new
LdapAggregationStrategy()).process(new
LdapModifyProcessor()).end().to(TO_FOLDER);

On Thu, Oct 15, 2009 at 5:01 PM, kodcanavari <[hidden email]> wrote:

>
> Hi,
>
> I want to use an aggregator in order to aggregate all messages comming.
> On my route i'm making a split with a splitter , then i process every
> messages  in parallel
> and then i want to aggregate them all into a single file.
>
> Here is my snippet :
>
>
> this.from(FROM_FOLDER).split(new LdapEntitySplitExpression()).process(new
> LdapModifyProcessor()).aggregate(header("LDIFRecord"),new
> LdapAggregationStrategy()).to(TO_FOLDER);
>
>
> and inside  LdapModifyProcessor() i do:
>
> exchange.getOut().setHeader("type", "LDIFRecord");
>
> but it does not work.
>
> can anyone tellme how can i let every messages go thru aggregator?
>
> regards.
>
>
>
> --
> View this message in context:
> http://www.nabble.com/How-to-aggregate-all-messages-into-a-single-message--tp25908234p25908234.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: How to aggregate all messages into a single message?

arda.aydin
Thanks a lot dulanov, it worked :)


but can you tell me what exactly end() do and why i cant use the aggregator class ?


dulanov wrote
Try to use this.from(FROM_FOLDER).split(new LdapEntitySplitExpression(), new
LdapAggregationStrategy()).process(new
LdapModifyProcessor()).end().to(TO_FOLDER);

On Thu, Oct 15, 2009 at 5:01 PM, kodcanavari <kodcanavari@gmail.com> wrote:

>
> Hi,
>
> I want to use an aggregator in order to aggregate all messages comming.
> On my route i'm making a split with a splitter , then i process every
> messages  in parallel
> and then i want to aggregate them all into a single file.
>
> Here is my snippet :
>
>
> this.from(FROM_FOLDER).split(new LdapEntitySplitExpression()).process(new
> LdapModifyProcessor()).aggregate(header("LDIFRecord"),new
> LdapAggregationStrategy()).to(TO_FOLDER);
>
>
> and inside  LdapModifyProcessor() i do:
>
> exchange.getOut().setHeader("type", "LDIFRecord");
>
> but it does not work.
>
> can anyone tellme how can i let every messages go thru aggregator?
>
> regards.
>
>
>
> --
> View this message in context:
> http://www.nabble.com/How-to-aggregate-all-messages-into-a-single-message--tp25908234p25908234.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: How to aggregate all messages into a single message?

arda.aydin
In reply to this post by dulanov

this.from(FROM_FOLDER)
.split(new LdapEntitySplitExpression(), new LdapAggregationStrategy())
.process(new LdapModifyProcessor())
.end()
.to(TO_FOLDER);

it works and aggregates processed messages into the same file but i want to complicate a little bit.

What i want to do is to split a file from a file endpoint, process each entry separately and then according to the entry content, i want to aggregate them into different files. So i wrote the code below but in this case the aggregation doesn't work, the outputs are in separate files.

this.from(m_from_folder_url)
        .split(new LdapEntitySplitExpression(),new LdapAggregationStrategy())
        .process(new LdapModifyProcessor(hMap))
                .choice()
                    .when(header("type").isEqualTo("add"))
                        .to(m_to_folder_url)
                    .when(header("type").isEqualTo("modify"))
                        .to(m_to_folder_url)
            .end();

So does anyone have an idea to solve it?

Thanks.






dulanov wrote
Try to use this.from(FROM_FOLDER).split(new LdapEntitySplitExpression(), new
LdapAggregationStrategy()).process(new
LdapModifyProcessor()).end().to(TO_FOLDER);

On Thu, Oct 15, 2009 at 5:01 PM, kodcanavari <kodcanavari@gmail.com> wrote:

>
> Hi,
>
> I want to use an aggregator in order to aggregate all messages comming.
> On my route i'm making a split with a splitter , then i process every
> messages  in parallel
> and then i want to aggregate them all into a single file.
>
> Here is my snippet :
>
>
> this.from(FROM_FOLDER).split(new LdapEntitySplitExpression()).process(new
> LdapModifyProcessor()).aggregate(header("LDIFRecord"),new
> LdapAggregationStrategy()).to(TO_FOLDER);
>
>
> and inside  LdapModifyProcessor() i do:
>
> exchange.getOut().setHeader("type", "LDIFRecord");
>
> but it does not work.
>
> can anyone tellme how can i let every messages go thru aggregator?
>
> regards.
>
>
>
> --
> View this message in context:
> http://www.nabble.com/How-to-aggregate-all-messages-into-a-single-message--tp25908234p25908234.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: How to aggregate all messages into a single message?

arda.aydin
In reply to this post by arda.aydin
I resolved my problem by this way:

        this.from(m_from_folder_url)
        .split(new SplitExpression())
        .process(new Processor())
                .choice()
                    .when(header("type").isEqualTo("add"))
                        .to("direct:addEntry")
                    .when(header("type").isEqualTo("modify"))
                        .to("direct:modifyEntry");
       
        from("direct:addEntry").aggregate(header("add"), new AggregationStrategy()).to(m_to_add_folder_url);
        from("direct:modifyEntry").aggregate(header("modify"), new AggregationStrategy()).to(m_to_modify_folder_url);

so this is a route which:
 - reads a file
 - splits it's entities
 - processes each entry separately
 - according to their nature aggregating processed entries to the appropriate file.


kodcanavari wrote
Hi,

I want to use an aggregator in order to aggregate all messages comming.
On my route i'm making a split with a splitter , then i process every messages  in parallel
and then i want to aggregate them all into a single file.

Here is my snippet :


this.from(FROM_FOLDER).split(new LdapEntitySplitExpression()).process(new LdapModifyProcessor()).aggregate(header("LDIFRecord"),new LdapAggregationStrategy()).to(TO_FOLDER);


and inside  LdapModifyProcessor() i do:

exchange.getOut().setHeader("type", "LDIFRecord");

but it does not work.

can anyone tellme how can i let every messages go thru aggregator?

regards.

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: How to aggregate all messages into a single message?

Claus Ibsen-2
Hi

Thanks for sharing your solution.
Looks nice with separate routes for the aggregation. Makes it easier
to test as well :)

On Mon, Nov 2, 2009 at 9:18 PM, kodcanavari <[hidden email]> wrote:

>
> I resolved my problem by this way:
>
>        this.from(m_from_folder_url)
>                .split(new SplitExpression())
>                .process(new Processor())
>                .choice()
>                    .when(header("type").isEqualTo("add"))
>                        .to("direct:addEntry")
>                    .when(header("type").isEqualTo("modify"))
>                        .to("direct:modifyEntry");
>
>        from("direct:addEntry").aggregate(header("add"), new
> AggregationStrategy()).to(m_to_add_folder_url);
>        from("direct:modifyEntry").aggregate(header("modify"), new
> AggregationStrategy()).to(m_to_modify_folder_url);
>
> so this is a route which:
>  - reads a file
>  - splits it's entities
>  - processes each entry separately
>  - according to their nature aggregating processed entries to the
> appropriate file.
>
>
>
> kodcanavari wrote:
>>
>> Hi,
>>
>> I want to use an aggregator in order to aggregate all messages comming.
>> On my route i'm making a split with a splitter , then i process every
>> messages  in parallel
>> and then i want to aggregate them all into a single file.
>>
>> Here is my snippet :
>>
>>
>> this.from(FROM_FOLDER).split(new LdapEntitySplitExpression()).process(new
>> LdapModifyProcessor()).aggregate(header("LDIFRecord"),new
>> LdapAggregationStrategy()).to(TO_FOLDER);
>>
>>
>> and inside  LdapModifyProcessor() i do:
>>
>> exchange.getOut().setHeader("type", "LDIFRecord");
>>
>> but it does not work.
>>
>> can anyone tellme how can i let every messages go thru aggregator?
>>
>> regards.
>>
>>
>>
>>
>
> --
> View this message in context: http://old.nabble.com/How-to-aggregate-all-messages-into-a-single-message--tp25908234p26157808.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>



--
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus
Loading...