git.net

# Re: log and set polling time information in exchange header

Hi, Claus
thanks for your quick reply. If I correctly understood what you said, you
propose to use something like this

from("file://C:\\path\\to\\sourceDirectory?delay=10000&directoryMustExist=true").routeId("myRouteId")
.log(LoggingLevel.INFO, "it.package.MyLogProcessor", [here the msg])
.to("bean:myProcessor")
.to("file://C:\\path\\to\\targetDirectory");

But, doing like that will produce a log for each exchange created during
one poll.
Actually, I need something different, because I don't want a log for each
exchange, but one for each executed polling (in this route example, one log
each 10 sec). So, in my log file, I want something like:
2018-03-05 11:10:20,722 .... Route with id 'myRouteId' scheduled on
05/03/2018 at 11:10:20
2018-03-05 11:10:30,722 .... Route with id 'myRouteId' scheduled on
05/03/2018 at 11:10:30
2018-03-05 11:10:40,722 .... Route with id 'myRouteId' scheduled on
05/03/2018 at 11:10:40

Besides the custom log, for each exchange created during a poll, I need to
set an header composed by routeId and polling time. So this header should
be the same for all the exchanges created at one polling time. Here is an
example.
When file consumer poll directory on 05/03/2018 at 11:10:20 -> all the
When file consumer poll directory on 05/03/2018 at 11:10:30 -> all the
and so on.

Because of these two requirements, I was thinking of doing both actions in
one class/processor because, as you can imagine, I need to have just the
same time in the log and in my custom header.
I hope this explains better my requirements.

Thanks again
Davide

2018-03-05 12:10 GMT+01:00 Claus Ibsen <claus.ibsen@xxxxxxxxx>:

> Hi
>
> Do like the first, dont use pollEnrich.
>
> So can you be more clean what you mean by n-th polling. So you set it
> to poll every 10 seconds. Do you want a log for each of those?
> Then just use the Log EIP
>
>
>
> On Mon, Mar 5, 2018 at 11:25 AM, Davide Rossi <davrossimail@xxxxxxxxx>
> wrote:
> > Hi everyone!
> > I have a route like this
> >
> >
> >
> >
> >
> > *from("file://C:\\path\\to\\sourceDirectory?delay=10000&
> directoryMustExist=true").routeId("myRouteId")
> > .to("bean:myProcessor")    .to("file://C:\\path\\to\\targetDirectory");*
> > Now, I need this:
> > - when the i-th polling happens, I want to have a cutom log reporting
> > routeId and polling time (sthg like "Route with id 'myRouteId' scheduled
> at
> > 05/03/2018 at 11:10:20" )
> > - each time a polling happens, I want to set an header for all the
> > exchanges created. This header contains routeId and the same polling time
> > reported above (so sthg like, 'myRouteId_ 05/03/2018T11:10:20 '). So this
> > header should be the same for all the exchanges created at one polling
> > time, but different from the one created at a different polling time.
> >
> > I have looked around but I wasn't able to find what just occurrs to me
> > using file component only.
> > So I tried to change the route like this
> >
> >
> >
> >
> >
> > *from("timer://foo?period=10000").routeId("myRouteId")
> > .pollEnrich("file://C:\\path\\to\\sourceDirectory?
> directoryMustExist=true")
> > .to("bean:myProcessor")   .to("file://C:\\path\\to\\targetDirectory");*
> >
> > This second solution seems to be ok but unfortunately the pollEnrich
> > doesn't get all the files in the sourceDirectory but only one at a time.
> >
> > So, is there another possible soultion?
> > Thank you very much
> > Davide
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2
>