2016-01-08 3 views
0

J'utilise Apache Camel pour surveiller une boîte de réception. J'ai essayé de savoir comment seuls les emails récemment reçus depuis le sondage précédent sont retournés. D'une manière ou d'une autre, ce processus ne retournera que les courriels qui ont été reçus entre le sondage précédent. Exemple: Le temps d'interrogation est défini sur 60 secondes. Si j'envoie un e-mail à la boîte de réception dans ce délai, un e-mail est traité par l'itinéraire. Si j'envoie deux courriels dans les 60 secondes suivantes, seulement deux courriels sont traités par la route et non trois, mais ils ignorent le premier courriel traité dans le sondage précédent. Je voudrais savoir comment cela se passe?Comment IMAP sait-il quels sont les emails à récupérer

Je ne visualise pas la boîte aux lettres ou ne marque aucun email comme lu.

<camel:camelContext id="webService"> 
    <camel:route id="monitor"> 
     <camel:from uri="imap://pulp.test.uk?username=tester&amp;password=testing&amp;unseen=true&amp;consumer.delay=60000" /> 
     <camel:process ref="storeProcessor" /> 
    </camel:route> 
</camel:camelContext> 
+0

Il peut garder une trace de ce que UIDs il est vu. Ou même juste le plus haut. Tous les nouveaux messages auront des UID plus élevés que tout autre message traité auparavant. – Max

Répondre

0

Veuillez regarder l'option "coup d'oeil" du composant camel imap. Généralement camel lors de l'extraction de nouveaux emails via imap "peek" chaque message traité. Dans ce cas, si le message est traité avec succès, il est marqué comme vu, mais s'il y aura une erreur pendant le traitement, le message restera invisible. Dans votre itinéraire, vous ne traitez que des messages invisibles.

http://camel.apache.org/mail.html

infos sur l'option "coup d'oeil" de la documentation:

consommateurs seulement. Marque le javax.mail.Message en tant que jeté avant de traiter le message. Cela s'applique uniquement aux types de messages IMAPMessage. En utilisant peek le courrier ne sera pas marqué comme vu sur le serveur de messagerie, ce qui nous permet d'annuler le message s'il y a un traitement d'erreur dans Camel.