Hi,

I had a very similar problem. I wrote a little bean which writes the last number processed to a file. Another method gives me the last number processed.

regards, Marco

Am 06.07.2012 11:53, schrieb Christian Lipp:
Do you mean " eagerMaxMessagesPerPoll" ?
I set it to false, but nothing changed.

In the camel code I could only find

contains in GenericFileConsumer
Add, remove in GenericFileOnCompletion

Regards, CL

-----Ursprüngliche Nachricht-----
Von: Sam (Stephen Samuel) [mailto:samspad...@gmail.com]
Gesendet: Freitag, 06. Juli 2012 11:17
An: users@camel.apache.org
Betreff: Re: IdempotentRepository

"This operation is used if the option eager has been enabled."

Take a look at that, that might be why confirm is not being called.

On Fri, Jul 6, 2012 at 7:17 AM, Christian Lipp<christian.l...@xion.at>wrote:

Hello!

I am fetching files from a FTP server (severall GB for the next years).
The files are produced daily in directories which correspond to the
date, like

-       20120501
-       20120502
-       ...

I have only read rights and I am not the only consumer. This means
that they keep the last month or so on the server and I fetch on a daily base.
To avoid that I am fetching files twice I want to use an
IdempotentRepository implementation. I don't want to save each file in
a database or in a text file because the service will run for years
and this is just unnecessary data.

What I want to store is the last processed date only. This handles
just the directories and would mean that I need some other strategy
for the files. I could combine this approach with the default in
memory based store. But let just stick to the directories:

I read the directory sorted by file name. The IdempotentRepository is
called by the FtpConsumer with

- start()
- contains() for every directory and file
- add() for files only

and that's it. No stop(), no confirm(). When I have errors, sometimes
remove() is called. Since the repository is called only with String
(the full path) I have not information if I deal with directories or
files. I know it from the structure, but I am not able to implement a
generic solution.

Anyway the idea is:

- Store the LastProcessedDate inside the repository
- contains(): if the path contains an already processed date
(<LastProcessedDate) then I skip it (return true) otherwise return false.
- add(): if add() jumps to the next directory I set the
LastProcessedDate to the directory before

The only problem is the last processed directory: even if it is
finished I do not get the chance to mark it as processed (set
LastProcessedDate to its value).

So finally my questions: do you think this approach makes sense and if
yes: how would you deal with the last processed directory?
If no, how would you solve it?

Thanks and kind regards, Christian



--
-Sam


Reply via email to