我正在使用Apache Camel监控电子邮件收件箱。我一直在试图弄清楚,自上次投票以来,新收到的电子邮件是如何被退回的。不知怎么的,这个过程只会回复上次投票期间收到的电子邮件。
投票时间设置为60秒。如果我在这个时间框架内向收件箱发送一封电子邮件,一封电子邮件将由路由处理。如果我在接下来的60秒内发送了两封电子邮件--只有两封邮件是由路由处理的,而不是三封邮件--它忽略了前一次投票中处理的第一封电子邮件。我想知道这是怎么发生的?
我不会查看邮箱或标记任何电子邮件为已阅读。
<camel:camelContext id="webService">
<camel:route id="monitor">
<camel:from uri="imap://pulp.test.uk?username=tester&password=testing&unseen=true&consumer.delay=60000" />
<camel:process ref="storeProcessor" />
</camel:route>
</camel:camelContext>
发布于 2016-01-08 09:54:37
请查看camel imap组件的"peek“选项。通常情况下,骆驼在通过imap“窥视”每条处理过的消息获取新邮件时。在这种情况下,如果消息被成功地处理,那么它将被标记为已见,但是如果在处理过程中会出现一些错误,那么消息将保持不可见。在您的路由中,您只处理未见的消息。
http://camel.apache.org/mail.html
文档中有关"peek“选项的信息:
只供消费者使用。将javax.mail.Message标记为在处理邮件之前查看。这只适用于IMAPMessage消息类型。通过使用peek,邮件将不会像在邮件服务器上看到的那样被标记,这允许我们在Camel中出现错误处理时回滚邮件消息。
https://stackoverflow.com/questions/34681004
复制相似问题