Hi Ah try using imap instead of pop3. pop3 is very limited and it may not work setting those flags. I think we have seen this in the past setting the flags to SEEN or DELETED etc.
We have a little tip about use imap instead of pop3 at the wiki page http://camel.apache.org/mail.html On Fri, Apr 22, 2011 at 9:27 PM, Donald Whytock <[email protected]> wrote: > At the moment my route is very short: > > from("pop3://bot@localhost?password=test") > .process(message1) > .process(peeker) > .choice() > .when(property("chatterbot.email").isNotNull()) > .to("seda:mailtester"); > > from("seda:mailtester") > .routeId("listener.test") > .process(message3); > > Peeker verifies the "from" header against a table; if found, it > changes the message body to String and sets chatterbot.email to > "true". Message1 and message3 kick out static messages to System.out. > The seda:mailtester consumer is in a different Felix bundle from the > mail consumer. Very little processing, very little time. > > I can send it an email, which it will pick up. Message 1 fires, > peeker shows the from address and body, message3 fires, and then I see > the debug log say the DELETED flag was set on the message ("Exchange > processed, so flagging message as DELETED"). A bit later I see the > same message being picked up again, and again the DELETED flag is set. > Occasionally I'll see the message picked up a third time. After that > the message doesn't get picked up again. > > Oddly, if I remove the routeId(), it stops happening. If I put the > routeId() back in, the problem happens again. > > On Fri, Apr 22, 2011 at 5:00 AM, Claus Ibsen <[email protected]> wrote: >> On Thu, Apr 21, 2011 at 8:50 PM, Donald Whytock <[email protected]> wrote: >>> Okay, it's not ROUTE_STOP, or not necessarily. I've been getting >>> mixed results with email deletion. In all cases I see the message >>> "Exchange processed, so flagging message as DELETED" coming from >>> MailConsumer.processCommit() as the exchange's onCompletion is run, >>> but in some cases the email doesn't actually get deleted, and shows up >>> again in the queues with the next polling. >>> >> >> How long time do it take to process the exchange, when you notice the >> email isn't deleted? >> Maybe the mail session times out, and it wont re-connect to set the >> DELETED flag. >> There should be something in the logs as camel-mail log at DEBUG level >> when it attempts to delete the mail. >> >> >> >>> I've removed and restored things I'm doing in my routes, and nothing >>> consistently causes the email to not be deleted. I'm at the point now >>> where, without changing the route, I see a message appear once, twice >>> or three times (varying) before it gets deleted. >>> >>> Is there a timeout on message deletion, such that if my route takes >>> too long the message won't get deleted? Do I need to copy the >>> exchange as soon as I get it, finish with the original and run with >>> the copy? >>> >>> On Wed, Apr 20, 2011 at 11:35 AM, Donald Whytock <[email protected]> wrote: >>>> But if I do filter on the pipeline it'll determine whether the entire >>>> pipeline is or isn't performed, right? So to break out of the >>>> pipeline I'd have to put the filter on each pipelined item, such as >>>> >>>> from X >>>> filter when Y >>>> to A >>>> filter when Y >>>> to B >>>> end // filter >>>> to C // do something after filter for all messages >>>> >>>> so as to pick up when Y became false. >>>> >>>> Since I use an instance of Pipeline with an ArrayList of Processors, >>>> this would become an ArrayList of FilterProcessor(predicate, >>>> processor)? >>>> >>>> On Wed, Apr 20, 2011 at 4:59 AM, Claus Ibsen <[email protected]> wrote: >>>>> On Wed, Apr 20, 2011 at 12:42 AM, Donald Whytock <[email protected]> >>>>> wrote: >>>>>> I ask because it appears to, in my application where I'm using >>>>>> ROUTE_STOP to break out of a pipeline. >>>>>> >>>>>> Perhaps there should be some mechanism for breaking out of a pipeline >>>>>> without killing the whole route? A PIPELINE_STOP property, or maybe >>>>>> ROUTE_STOP could contain the ID of the route to be broken out of, >>>>>> allowing containing routes to continue? >>>>>> >>>>> >>>>> You can use the filter EIP to only process messages based on a predicate. >>>>> >>>>> from X >>>>> filter when Y >>>>> to A >>>>> to B >>>>> end // filter >>>>> to C // do something after filter for all messages >>>>> >>>>>> >>>>>> On Tue, Apr 19, 2011 at 3:40 PM, Donald Whytock <[email protected]> >>>>>> wrote: >>>>>>> Hi all... >>>>>>> >>>>>>> Does using ROUTE_STOP on an email exchange prevent the message from >>>>>>> being deleted from the POP3 server? >>>>>>> >>>>>>> Don >>>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Claus Ibsen >>>>> ----------------- >>>>> FuseSource >>>>> Email: [email protected] >>>>> Web: http://fusesource.com >>>>> CamelOne 2011: http://fusesource.com/camelone2011/ >>>>> Twitter: davsclaus >>>>> Blog: http://davsclaus.blogspot.com/ >>>>> Author of Camel in Action: http://www.manning.com/ibsen/ >>>>> >>>> >>> >> >> >> >> -- >> Claus Ibsen >> ----------------- >> FuseSource >> Email: [email protected] >> Web: http://fusesource.com >> CamelOne 2011: http://fusesource.com/camelone2011/ >> Twitter: davsclaus >> Blog: http://davsclaus.blogspot.com/ >> Author of Camel in Action: http://www.manning.com/ibsen/ >> > -- Claus Ibsen ----------------- FuseSource Email: [email protected] Web: http://fusesource.com CamelOne 2011: http://fusesource.com/camelone2011/ Twitter: davsclaus Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/
