git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: log and set polling time information in exchange header


Hi

You can use the filter EIP and then filter on when the file batch is complete.
You already have a timestamp on the exchange when it was created so
you can grab that.

And mind this will only trigger when there are files, if there is no
files then the route is not executed.
You can then turn on the sendEmptyMessageWhenIdle to trigger a "empty message".



On Mon, Mar 5, 2018 at 4:45 PM, Davide Rossi <davrossimail@xxxxxxxxx> wrote:
> 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
> exchanges must have header "myHeader":"myRouteId_05/03/2018T11:10:20"
> When file consumer poll directory on 05/03/2018 at 11:10:30 -> all the
> exchanges must have header "myHeader":"myRouteId_05/03/2018T11:10:30"
> 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")
>> > .to("bean:myHeaderProcessor") <-- this logs and create my header
>> > .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
>>



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2



( ! ) Warning: include(msgfooter.php): failed to open stream: No such file or directory in /var/www/git/apache-camel-users/msg03108.html on line 193
Call Stack
#TimeMemoryFunctionLocation
10.0007368696{main}( ).../msg03108.html:0

( ! ) Warning: include(): Failed opening 'msgfooter.php' for inclusion (include_path='.:/var/www/git') in /var/www/git/apache-camel-users/msg03108.html on line 193
Call Stack
#TimeMemoryFunctionLocation
10.0007368696{main}( ).../msg03108.html:0