You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Charles Moulliard <cm...@gmail.com> on 2009/06/16 14:11:35 UTC
Information required about IN/OUT pattern of splitter EIP
Hi,
I'm a little confused about the split EIP pattern combined with aggregation
strategy. In the example (see http://camel.apache.org/splitter.html - Split
aggregate request/reply sample), the out exchange is used to retrieved the
body content and also to set it because the pattern is of type InOut.
I have created an aggregator but in my case, I must use the content of the
In to retrieve my body
List requestMessages = new ArrayList();
if (oldExchange == null) {
requestMessages.add(newExchange.getIn().getBody(RequestMessage.class));
newExchange.getOut().setBody(requestMessages);
return newExchange;
} else {
// Get old messages
requestMessages = oldExchange.getIn().getBody(List.class);
// Get new and add it to the list
requestMessages.add(newExchange.getOut().getBody(RequestMessage.class));
// Add to the exchange
oldExchange.getOut().setBody(requestMessages);
return oldExchange;
}
Questions :
- Is the split EIP an InOut pattern ?
- When I develop the aggregator like this, the headers of my messages have
disappeared when the endpoint called after the end of the split receives the
List of Objects. How can I avoid this ?
Regards,
Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer
*****************************
blog : http://cmoulliard.blogspot.com
Re: Information required about IN/OUT pattern of splitter EIP
Posted by Charles Moulliard <cm...@gmail.com>.
+1 ;-)
On Mon, Jun 22, 2009 at 12:11 PM, Claus Ibsen <cl...@gmail.com> wrote:
> Hi
> I created a ticket for this
> https://issues.apache.org/activemq/browse/CAMEL-1722
>
> And have committed the fix right now.
>
> When you upgrade
> to latest camel core and using AggregationStrategy then the body is
> now always in IN and OUT is null.
> This eliminates the confusion as you should just always use IN.
>
>
> On Tue, Jun 16, 2009 at 4:16 PM, Claus Ibsen <cl...@gmail.com>
> wrote:
>
> > On Tue, Jun 16, 2009 at 4:10 PM, Charles Moulliard<cm...@gmail.com>
> > wrote:
> > > What do you mean by 1 = OUT, 2+ = IN ?
> > Number of processors you have in the route. eg = the number of <to
> > uri="xxx"/> you have
> >
> > 1 =
> > <split>
> > <to uri="foo"/>
> > </split>
> >
> > 2+ =
> > <split>
> > <to uri="foo"/>
> > <to uri="bar"/>
> > <to uri="baz"/>
> > </split>
> >
> >
> > >
> > >
> > > Charles Moulliard
> > > Senior Enterprise Architect
> > > Apache Camel Committer
> > >
> > > *****************************
> > > blog : http://cmoulliard.blogspot.com
> > >
> > >
> > > On Tue, Jun 16, 2009 at 4:03 PM, Claus Ibsen <cl...@gmail.com>
> > wrote:
> > >
> > >> [15:59] <cibsen> chm007 its because of using AggregatorStrategy is
> > >> very low level
> > >> [15:59] <cibsen> you work on Exchange directly
> > >> [15:59] <cibsen> and it depends on how many processing steps you have
> > >> in the split sub route
> > >> [15:59] <cibsen> 1 = OUT
> > >> [15:59] <cibsen> 2+ = IN as Camel will use a Pipeline under the
> > converers
> > >> [15:59] <cibsen> so Camel will do a OUT -> IN in the next processor
> > >> [15:59] <cibsen> so OUT -> IN to the AggregatorStrategy also
> > >> [15:59] <cibsen> its a bit confusing
> > >> [16:00] <cibsen> will be better when you can use a POJO for
> aggregation
> > >>
> > >> On Tue, Jun 16, 2009 at 2:11 PM, Charles Moulliard<
> cmoulliard@gmail.com
> > >
> > >> wrote:
> > >> > Hi,
> > >> >
> > >> > I'm a little confused about the split EIP pattern combined with
> > >> aggregation
> > >> > strategy. In the example (see http://camel.apache.org/splitter.html-
> > >> Split
> > >> > aggregate request/reply sample), the out exchange is used to
> retrieved
> > >> the
> > >> > body content and also to set it because the pattern is of type
> InOut.
> > >> >
> > >> > I have created an aggregator but in my case, I must use the content
> of
> > >> the
> > >> > In to retrieve my body
> > >> >
> > >> > List requestMessages = new ArrayList();
> > >> >
> > >> > if (oldExchange == null) {
> > >> >
> > >> >
> > requestMessages.add(newExchange.getIn().getBody(RequestMessage.class));
> > >> > newExchange.getOut().setBody(requestMessages);
> > >> > return newExchange;
> > >> > } else {
> > >> > // Get old messages
> > >> > requestMessages =
> oldExchange.getIn().getBody(List.class);
> > >> >
> > >> > // Get new and add it to the list
> > >> >
> > >> >
> > requestMessages.add(newExchange.getOut().getBody(RequestMessage.class));
> > >> >
> > >> > // Add to the exchange
> > >> > oldExchange.getOut().setBody(requestMessages);
> > >> > return oldExchange;
> > >> >
> > >> > }
> > >> >
> > >> >
> > >> > Questions :
> > >> > - Is the split EIP an InOut pattern ?
> > >> > - When I develop the aggregator like this, the headers of my
> messages
> > >> have
> > >> > disappeared when the endpoint called after the end of the split
> > receives
> > >> the
> > >> > List of Objects. How can I avoid this ?
> > >> >
> > >> > Regards,
> > >> >
> > >> > Charles Moulliard
> > >> > Senior Enterprise Architect
> > >> > Apache Camel Committer
> > >> >
> > >> > *****************************
> > >> > blog : http://cmoulliard.blogspot.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
> >
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>
Re: Information required about IN/OUT pattern of splitter EIP
Posted by Claus Ibsen <cl...@gmail.com>.
Hi
I created a ticket for this
https://issues.apache.org/activemq/browse/CAMEL-1722
And have committed the fix right now.
When you upgrade
to latest camel core and using AggregationStrategy then the body is
now always in IN and OUT is null.
This eliminates the confusion as you should just always use IN.
On Tue, Jun 16, 2009 at 4:16 PM, Claus Ibsen <cl...@gmail.com> wrote:
> On Tue, Jun 16, 2009 at 4:10 PM, Charles Moulliard<cm...@gmail.com>
> wrote:
> > What do you mean by 1 = OUT, 2+ = IN ?
> Number of processors you have in the route. eg = the number of <to
> uri="xxx"/> you have
>
> 1 =
> <split>
> <to uri="foo"/>
> </split>
>
> 2+ =
> <split>
> <to uri="foo"/>
> <to uri="bar"/>
> <to uri="baz"/>
> </split>
>
>
> >
> >
> > Charles Moulliard
> > Senior Enterprise Architect
> > Apache Camel Committer
> >
> > *****************************
> > blog : http://cmoulliard.blogspot.com
> >
> >
> > On Tue, Jun 16, 2009 at 4:03 PM, Claus Ibsen <cl...@gmail.com>
> wrote:
> >
> >> [15:59] <cibsen> chm007 its because of using AggregatorStrategy is
> >> very low level
> >> [15:59] <cibsen> you work on Exchange directly
> >> [15:59] <cibsen> and it depends on how many processing steps you have
> >> in the split sub route
> >> [15:59] <cibsen> 1 = OUT
> >> [15:59] <cibsen> 2+ = IN as Camel will use a Pipeline under the
> converers
> >> [15:59] <cibsen> so Camel will do a OUT -> IN in the next processor
> >> [15:59] <cibsen> so OUT -> IN to the AggregatorStrategy also
> >> [15:59] <cibsen> its a bit confusing
> >> [16:00] <cibsen> will be better when you can use a POJO for aggregation
> >>
> >> On Tue, Jun 16, 2009 at 2:11 PM, Charles Moulliard<cmoulliard@gmail.com
> >
> >> wrote:
> >> > Hi,
> >> >
> >> > I'm a little confused about the split EIP pattern combined with
> >> aggregation
> >> > strategy. In the example (see http://camel.apache.org/splitter.html -
> >> Split
> >> > aggregate request/reply sample), the out exchange is used to retrieved
> >> the
> >> > body content and also to set it because the pattern is of type InOut.
> >> >
> >> > I have created an aggregator but in my case, I must use the content of
> >> the
> >> > In to retrieve my body
> >> >
> >> > List requestMessages = new ArrayList();
> >> >
> >> > if (oldExchange == null) {
> >> >
> >> >
> requestMessages.add(newExchange.getIn().getBody(RequestMessage.class));
> >> > newExchange.getOut().setBody(requestMessages);
> >> > return newExchange;
> >> > } else {
> >> > // Get old messages
> >> > requestMessages = oldExchange.getIn().getBody(List.class);
> >> >
> >> > // Get new and add it to the list
> >> >
> >> >
> requestMessages.add(newExchange.getOut().getBody(RequestMessage.class));
> >> >
> >> > // Add to the exchange
> >> > oldExchange.getOut().setBody(requestMessages);
> >> > return oldExchange;
> >> >
> >> > }
> >> >
> >> >
> >> > Questions :
> >> > - Is the split EIP an InOut pattern ?
> >> > - When I develop the aggregator like this, the headers of my messages
> >> have
> >> > disappeared when the endpoint called after the end of the split
> receives
> >> the
> >> > List of Objects. How can I avoid this ?
> >> >
> >> > Regards,
> >> >
> >> > Charles Moulliard
> >> > Senior Enterprise Architect
> >> > Apache Camel Committer
> >> >
> >> > *****************************
> >> > blog : http://cmoulliard.blogspot.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
>
--
Claus Ibsen
Apache Camel Committer
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus
Re: Information required about IN/OUT pattern of splitter EIP
Posted by Claus Ibsen <cl...@gmail.com>.
On Tue, Jun 16, 2009 at 4:10 PM, Charles Moulliard<cm...@gmail.com> wrote:
> What do you mean by 1 = OUT, 2+ = IN ?
Number of processors you have in the route. eg = the number of <to
uri="xxx"/> you have
1 =
<split>
<to uri="foo"/>
</split>
2+ =
<split>
<to uri="foo"/>
<to uri="bar"/>
<to uri="baz"/>
</split>
>
>
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
>
> *****************************
> blog : http://cmoulliard.blogspot.com
>
>
> On Tue, Jun 16, 2009 at 4:03 PM, Claus Ibsen <cl...@gmail.com> wrote:
>
>> [15:59] <cibsen> chm007 its because of using AggregatorStrategy is
>> very low level
>> [15:59] <cibsen> you work on Exchange directly
>> [15:59] <cibsen> and it depends on how many processing steps you have
>> in the split sub route
>> [15:59] <cibsen> 1 = OUT
>> [15:59] <cibsen> 2+ = IN as Camel will use a Pipeline under the converers
>> [15:59] <cibsen> so Camel will do a OUT -> IN in the next processor
>> [15:59] <cibsen> so OUT -> IN to the AggregatorStrategy also
>> [15:59] <cibsen> its a bit confusing
>> [16:00] <cibsen> will be better when you can use a POJO for aggregation
>>
>> On Tue, Jun 16, 2009 at 2:11 PM, Charles Moulliard<cm...@gmail.com>
>> wrote:
>> > Hi,
>> >
>> > I'm a little confused about the split EIP pattern combined with
>> aggregation
>> > strategy. In the example (see http://camel.apache.org/splitter.html -
>> Split
>> > aggregate request/reply sample), the out exchange is used to retrieved
>> the
>> > body content and also to set it because the pattern is of type InOut.
>> >
>> > I have created an aggregator but in my case, I must use the content of
>> the
>> > In to retrieve my body
>> >
>> > List requestMessages = new ArrayList();
>> >
>> > if (oldExchange == null) {
>> >
>> > requestMessages.add(newExchange.getIn().getBody(RequestMessage.class));
>> > newExchange.getOut().setBody(requestMessages);
>> > return newExchange;
>> > } else {
>> > // Get old messages
>> > requestMessages = oldExchange.getIn().getBody(List.class);
>> >
>> > // Get new and add it to the list
>> >
>> > requestMessages.add(newExchange.getOut().getBody(RequestMessage.class));
>> >
>> > // Add to the exchange
>> > oldExchange.getOut().setBody(requestMessages);
>> > return oldExchange;
>> >
>> > }
>> >
>> >
>> > Questions :
>> > - Is the split EIP an InOut pattern ?
>> > - When I develop the aggregator like this, the headers of my messages
>> have
>> > disappeared when the endpoint called after the end of the split receives
>> the
>> > List of Objects. How can I avoid this ?
>> >
>> > Regards,
>> >
>> > Charles Moulliard
>> > Senior Enterprise Architect
>> > Apache Camel Committer
>> >
>> > *****************************
>> > blog : http://cmoulliard.blogspot.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
Re: Information required about IN/OUT pattern of splitter EIP
Posted by Charles Moulliard <cm...@gmail.com>.
What do you mean by 1 = OUT, 2+ = IN ?
Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer
*****************************
blog : http://cmoulliard.blogspot.com
On Tue, Jun 16, 2009 at 4:03 PM, Claus Ibsen <cl...@gmail.com> wrote:
> [15:59] <cibsen> chm007 its because of using AggregatorStrategy is
> very low level
> [15:59] <cibsen> you work on Exchange directly
> [15:59] <cibsen> and it depends on how many processing steps you have
> in the split sub route
> [15:59] <cibsen> 1 = OUT
> [15:59] <cibsen> 2+ = IN as Camel will use a Pipeline under the converers
> [15:59] <cibsen> so Camel will do a OUT -> IN in the next processor
> [15:59] <cibsen> so OUT -> IN to the AggregatorStrategy also
> [15:59] <cibsen> its a bit confusing
> [16:00] <cibsen> will be better when you can use a POJO for aggregation
>
> On Tue, Jun 16, 2009 at 2:11 PM, Charles Moulliard<cm...@gmail.com>
> wrote:
> > Hi,
> >
> > I'm a little confused about the split EIP pattern combined with
> aggregation
> > strategy. In the example (see http://camel.apache.org/splitter.html -
> Split
> > aggregate request/reply sample), the out exchange is used to retrieved
> the
> > body content and also to set it because the pattern is of type InOut.
> >
> > I have created an aggregator but in my case, I must use the content of
> the
> > In to retrieve my body
> >
> > List requestMessages = new ArrayList();
> >
> > if (oldExchange == null) {
> >
> > requestMessages.add(newExchange.getIn().getBody(RequestMessage.class));
> > newExchange.getOut().setBody(requestMessages);
> > return newExchange;
> > } else {
> > // Get old messages
> > requestMessages = oldExchange.getIn().getBody(List.class);
> >
> > // Get new and add it to the list
> >
> > requestMessages.add(newExchange.getOut().getBody(RequestMessage.class));
> >
> > // Add to the exchange
> > oldExchange.getOut().setBody(requestMessages);
> > return oldExchange;
> >
> > }
> >
> >
> > Questions :
> > - Is the split EIP an InOut pattern ?
> > - When I develop the aggregator like this, the headers of my messages
> have
> > disappeared when the endpoint called after the end of the split receives
> the
> > List of Objects. How can I avoid this ?
> >
> > Regards,
> >
> > Charles Moulliard
> > Senior Enterprise Architect
> > Apache Camel Committer
> >
> > *****************************
> > blog : http://cmoulliard.blogspot.com
> >
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>
Re: Information required about IN/OUT pattern of splitter EIP
Posted by Claus Ibsen <cl...@gmail.com>.
[15:59] <cibsen> chm007 its because of using AggregatorStrategy is
very low level
[15:59] <cibsen> you work on Exchange directly
[15:59] <cibsen> and it depends on how many processing steps you have
in the split sub route
[15:59] <cibsen> 1 = OUT
[15:59] <cibsen> 2+ = IN as Camel will use a Pipeline under the converers
[15:59] <cibsen> so Camel will do a OUT -> IN in the next processor
[15:59] <cibsen> so OUT -> IN to the AggregatorStrategy also
[15:59] <cibsen> its a bit confusing
[16:00] <cibsen> will be better when you can use a POJO for aggregation
On Tue, Jun 16, 2009 at 2:11 PM, Charles Moulliard<cm...@gmail.com> wrote:
> Hi,
>
> I'm a little confused about the split EIP pattern combined with aggregation
> strategy. In the example (see http://camel.apache.org/splitter.html - Split
> aggregate request/reply sample), the out exchange is used to retrieved the
> body content and also to set it because the pattern is of type InOut.
>
> I have created an aggregator but in my case, I must use the content of the
> In to retrieve my body
>
> List requestMessages = new ArrayList();
>
> if (oldExchange == null) {
>
> requestMessages.add(newExchange.getIn().getBody(RequestMessage.class));
> newExchange.getOut().setBody(requestMessages);
> return newExchange;
> } else {
> // Get old messages
> requestMessages = oldExchange.getIn().getBody(List.class);
>
> // Get new and add it to the list
>
> requestMessages.add(newExchange.getOut().getBody(RequestMessage.class));
>
> // Add to the exchange
> oldExchange.getOut().setBody(requestMessages);
> return oldExchange;
>
> }
>
>
> Questions :
> - Is the split EIP an InOut pattern ?
> - When I develop the aggregator like this, the headers of my messages have
> disappeared when the endpoint called after the end of the split receives the
> List of Objects. How can I avoid this ?
>
> Regards,
>
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
>
> *****************************
> blog : http://cmoulliard.blogspot.com
>
--
Claus Ibsen
Apache Camel Committer
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus