0
<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春季集成郵件入站通道適配器配置爲POP3訪問和使用輪詢配置後運行一段時間後掛起
感謝您的回覆。當問題出現時,我會嘗試捕獲線程轉儲。是否有任何其他解決方案不涉及使用輪詢配置來實現相同的功能。這個應用程序是電子郵件驅動的,電子郵件的頻率並不是很高。因此,定期開始的定期工作(每小時一次)可能會奏效。唯一不利的一面是處理不及時發生。如果你能想到其他的選擇,請告訴我。 –
根據我的經驗,如果輪詢停止,則表示線程停留在用戶代碼中,或者其他代碼耗盡了默認調度程序中的線程池。您通常不應該在輪詢器線程上運行長時間運行的任務;調度程序默認只有10個線程,但[可以重新配置](https://docs.spring.io/spring-integration/reference/html/configuration.html#namespace-taskscheduler)。線程轉儲將顯示任一條件。 –