【发布时间】:2017-08-30 18:51:16
【问题描述】:
<int:channel id="emailInputChannel"/>
<!-- Email Poller. Only one poller thread -->
<task:executor id="emailPollingExecutor" pool-size="1" />
<int-mail:inbound-channel-adapter id="pop3EmailAdapter" store-uri="pop3://${pop3.user}:${pop3.pwd}@${pop3.server.host}/Inbox"
channel="emailInputChannel" should-delete-messages="true" auto-startup="true" java-mail-properties="javaMailProperties">
<int:poller max-messages-per-poll="1" fixed-delay="${email.poller.delay}" task-executor="emailPollingExecutor"/>
</int-mail:inbound-channel-adapter>
<!-- Java Mail POP3 properties -->
<util:properties id="javaMailProperties">
<beans:prop key="mail.debug">true</beans:prop>
<beans:prop key="mail.pop3.port">${pop3.server.port}</beans:prop>
</util:properties>
此应用程序轮询包含应用程序文件附件的电子邮件,这些附件包含要处理的数据。电子邮件附件通常每天发送几次,并且相对零星。由于文件包含用于批量加载的数据,因此我们采用了这种配置,为入站 POP3 邮件适配器使用了一个轮询器。拥有多个轮询器会导致重复的轮询器调用来提取同一封电子邮件,而另一个轮询器正在处理它。但是,使用此配置,单个轮询器会在一段时间后挂起,而日志中没有任何问题的迹象。请查看此配置有什么问题。此外,是否有另一种触发电子邮件适配器的方法(例如,定期间隔的 cron 等)?我正在使用 Spring Integration 2.1
【问题讨论】: