camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Wilson MacGyver <wmacgy...@gmail.com>
Subject Re: action at the end of the split
Date Fri, 14 Aug 2015 20:49:39 GMT
tried that, sadly no go. any header I set within the split, isn't
accessible outside of the split block either.

On Tue, Aug 11, 2015 at 4:54 AM, mailinglist@j-b-s.de <mailinglist@j-b-s.de>
wrote:

> Hi!
>
> Try the following: in your split route just set a new header field with
> the value of "splitsize". Ok, this assignment is made more than once
> redundantly per each splitted element, but header properties you create on
> the original message are retained (hopefully :-)
>
> Jens
>
> Von meinem iPhone gesendet
>
> > Am 10.08.2015 um 21:49 schrieb Wilson MacGyver <wmacgyver@gmail.com>:
> >
> > I'm sorry my message isn't clear. I've read the docs and the chapter that
> > deal with this in the camel book. The issue I have isn't with the each
> time
> > part.
> >
> > It's the final log part after the split is done. My goal is after the end
> > of the split block to send an email logging the total number updates.
> >
> > But as you can see, CamelSplitSize is no longer set outside of the split
> > block. So I have no way of sending that to a SMTP route.
> >
> > On Mon, Aug 10, 2015 at 4:15 PM Christian Müller <
> > christian.mueller@gmail.com> wrote:
> >
> >> Sure, that's how stream works. We do not load the entire payload into
> >> memory.
> >> Why don't you use the property CamelSplitIndex? In this case, the output
> >> will be
> >>
> >> [Test worker] INFO route1 - each time 0
> >>
> >> [Test worker] INFO route1 - each time 1
> >>
> >> [Test worker] INFO route1 - each time 2
> >>
> >> Best,
> >>
> >> Christian
> >> -----------------
> >>
> >> Software Integration Specialist
> >>
> >> Apache Member
> >> V.P. Apache Camel | Apache Camel PMC Member | Apache Camel committer
> >> Apache Incubator PMC Member
> >>
> >> https://www.linkedin.com/pub/christian-mueller/11/551/642
> >>
> >> On Mon, Aug 10, 2015 at 4:35 AM, Wilson MacGyver <wmacgyver@gmail.com>
> >> wrote:
> >>
> >>> public class SplitTest extends CamelTestSupport {
> >>>
> >>>    @EndpointInject(uri = "mock:result")
> >>>
> >>>    protected MockEndpoint resultEndpoint;
> >>>
> >>>
> >>>    @Produce(uri = "direct:testSplit")
> >>>
> >>>    protected org.apache.camel.ProducerTemplate template;
> >>>
> >>>
> >>>    @Test
> >>>
> >>>    public void testWithString() throws Exception{
> >>>
> >>>        String content = "a\nb\nc";
> >>>
> >>>
> >>>        resultEndpoint.expectedMessageCount(3);
> >>>
> >>>
> >>>        template.sendBodyAndHeader(
> >>>
> >>>                content,
> >>>
> >>>                "foo", "bar");
> >>>
> >>>
> >>>        resultEndpoint.assertIsSatisfied();
> >>>
> >>>    }
> >>>
> >>>
> >>>    @Override
> >>>
> >>>    protected RouteBuilder createRouteBuilder() {
> >>>
> >>>        return new RouteBuilder() {
> >>>
> >>>            public void configure() {
> >>>
> >>>                from("direct:testSplit")
> >>>
> >>>                        .split(body().tokenize("\n")).streaming()
> >>>
> >>>                            .log("each time ${property.CamelSplitSize}")
> >>>
> >>>                            .to("mock:result")
> >>>
> >>>                        .end()
> >>>
> >>>                        .log("Processed ${property.CamelSplitSize}
> >>> updates")
> >>>
> >>>                        .log("should only happen once");
> >>>
> >>>            }
> >>>
> >>>        };
> >>>
> >>>    }
> >>>
> >>> }
> >>>
> >>>
> >>> running this, I get the following
> >>>
> >>>
> >>>
> >>> [Test worker] INFO route1 - each time
> >>>
> >>> [Test worker] INFO route1 - each time
> >>>
> >>> [Test worker] INFO route1 - each time 3
> >>>
> >>> [Test worker] INFO route1 - Processed  updates
> >>>
> >>> [Test worker] INFO route1 - should only happen once
> >>>
> >>>
> >>> given the input of 3 lines. CamelSplitSize is only set at the end of
> the
> >>> split. so only the 3rd time has the 3 displayed which is correct.
> >>>
> >>> however notice it says  Processed  updates, because the property is
> only
> >>> set within the split..end block
> >>>
> >>> that's what I meant by out of scope
> >>>
> >>>
> >>>
> >>> On Sun, Aug 9, 2015 at 3:23 PM, Christian Müller <
> >>> christian.mueller@gmail.com> wrote:
> >>>
> >>>> What do you mean with "is out of scope"?
> >>>> You can use the message header to get this information.
> >>>>
> >>>> Best,
> >>>>
> >>>> Christian
> >>>> -----------------
> >>>>
> >>>> Software Integration Specialist
> >>>>
> >>>> Apache Member
> >>>> V.P. Apache Camel | Apache Camel PMC Member | Apache Camel committer
> >>>> Apache Incubator PMC Member
> >>>>
> >>>> https://www.linkedin.com/pub/christian-mueller/11/551/642
> >>>>
> >>>> On Thu, Aug 6, 2015 at 5:26 PM, Wilson MacGyver <wmacgyver@gmail.com>
> >>>> wrote:
> >>>>
> >>>>> I figured out what I was doing wrong.  It's because I was using
> >> filter
> >>>> with
> >>>>> bean. I didn't realize I had to add an end() to terminate the
> >> filtering
> >>>>>
> >>>>>
> >>>>> from()
> >>>>>
> >>>>> .split(body().tokenize("\n")).streaming()
> >>>>>
> >>>>> .process() /do stuff
> >>>>>
> >>>>> .filter().method(MyFilter.class, "keepIt")
> >>>>>
> >>>>>  .to("mock:result")
> >>>>>
> >>>>> .end()
> >>>>>
> >>>>> .log("final time ${property.CamelSplitSize}")
> >>>>>
> >>>>> .to(smtp://)
> >>>>>
> >>>>>
> >>>>> now I have a different problem. I need to know the # of total
> >>> processed.
> >>>>> But the CamelSplitSize property is out of scope. Anyway to work
> >> around
> >>>>> that?
> >>>>>
> >>>>>
> >>>>> Thanks
> >>>>>
> >>>>>
> >>>>>
> >>>>> On Thu, Jul 23, 2015 at 2:03 PM, Claus Ibsen <claus.ibsen@gmail.com>
> >>>>> wrote:
> >>>>>
> >>>>>> You must be doing some more inside the splitter and you may
need 2
> >> x
> >>>> end
> >>>>>>
> >>>>>> On Thu, Jul 23, 2015 at 7:45 PM, Wilson MacGyver <
> >>> wmacgyver@gmail.com>
> >>>>>> wrote:
> >>>>>>> hmm, if I understand you correctly, this isn't working for
me.
> >>>>>>>
> >>>>>>> I have
> >>>>>>>
> >>>>>>> from()
> >>>>>>>
> >>>>>>> .split(body().tokenize("\n")).streaming()
> >>>>>>>
> >>>>>>> .process() /do stuff
> >>>>>>>
> >>>>>>> .end()
> >>>>>>>
> >>>>>>> .log("${in.body}")
> >>>>>>>
> >>>>>>> .to(smtp://)
> >>>>>>>
> >>>>>>>
> >>>>>>> say if the file has 100 lines, I'd except to see the log
once if
> >> I
> >>>>>>> understand what you are saying correctly. but I see the
log 100
> >>>> times.
> >>>>>>>
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> On Thu, Jul 23, 2015 at 1:24 PM, Claus Ibsen <
> >>> claus.ibsen@gmail.com>
> >>>>>> wrote:
> >>>>>>>
> >>>>>>>> You can do that after the splitter
> >>>>>>>>
> >>>>>>>> <from>
> >>>>>>>>  <split>
> >>>>>>>>    ... inside splitter
> >>>>>>>>  </split>
> >>>>>>>> .. split done
> >>>>>>>>  <to email> send email here
> >>>>>>>>
> >>>>>>>> In Java DSL you can use .end() to end the split block.
> >>>>>>>>
> >>>>>>>> On Thu, Jul 23, 2015 at 7:21 PM, Wilson MacGyver <
> >>>> wmacgyver@gmail.com
> >>>>>>
> >>>>>>>> wrote:
> >>>>>>>>> Hi,
> >>>>>>>>>
> >>>>>>>>> I'm processing a large file. so I use .split and
.streaming to
> >>>>> process
> >>>>>>>> it a
> >>>>>>>>> record at a time.
> >>>>>>>>>
> >>>>>>>>> I would like to send an email alert upon completion
of
> >>> processing
> >>>>> the
> >>>>>>>> file.
> >>>>>>>>>
> >>>>>>>>> but I can't figure out where to do that.
> >>>>>>>>>
> >>>>>>>>> I know I can check to see if it's the last exchange
using
> >>> property
> >>>>>>>>> "CamelSplitComplete", but it's set to true on the
last
> >> exchange.
> >>>> So
> >>>>> I
> >>>>>>>> still
> >>>>>>>>> need to let it finish.
> >>>>>>>>>
> >>>>>>>>> Is there a good way to this?
> >>>>>>>>>
> >>>>>>>>> Thanks,
> >>>>>>>>> Mac
> >>>>>>>>>
> >>>>>>>>> --
> >>>>>>>>> Omnem crede diem tibi diluxisse supremum.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> --
> >>>>>>>> Claus Ibsen
> >>>>>>>> -----------------
> >>>>>>>> http://davsclaus.com @davsclaus
> >>>>>>>> Camel in Action 2nd edition: http://www.manning.com/ibsen2
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>> Omnem crede diem tibi diluxisse supremum.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Claus Ibsen
> >>>>>> -----------------
> >>>>>> http://davsclaus.com @davsclaus
> >>>>>> Camel in Action 2nd edition: http://www.manning.com/ibsen2
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Omnem crede diem tibi diluxisse supremum.
> >>>
> >>>
> >>>
> >>> --
> >>> Omnem crede diem tibi diluxisse supremum.
> >>
>



-- 
Omnem crede diem tibi diluxisse supremum.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message