2016-08-10 11 views
0

Spring Integrationを使用してPOP3受信ボックスに接続しています(残念ながらIMAPをサポートしていません)。ここに私の設定です:Spring統合ロックがビジーで、別のセッションがアクティブです

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd 
    http://www.springframework.org/schema/integration/mail http://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd 
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" 
    xmlns:int="http://www.springframework.org/schema/integration" 
    xmlns:int-mail="http://www.springframework.org/schema/integration/mail" 
    xmlns:util="http://www.springframework.org/schema/util"> 

    <int:channel id="mailInputChannel" /> 
    <int:channel id="channel1" /> 
    <int:channel id="channel2" /> 
    <int:channel id="discardChannel" /> 

    <!-- replace 'userid and 'password' with the real values --> 
    <int-mail:inbound-channel-adapter id="pop3ShouldDeleteTrue" 
         store-uri="pop3://userid:[email protected]/Inbox" 
        channel="mailInputChannel" 
        should-delete-messages="true" 
        auto-startup="true" 
        java-mail-properties="javaMailProperties"> 

    <!-- Will poll every 1 seconds --> 
    <int:poller max-messages-per-poll="1000" fixed-delay="1000"/> 

    </int-mail:inbound-channel-adapter> 

    <int:recipient-list-router id="incomingMailRouter" input-channel="mailInputChannel"> 
    <int:recipient channel="channel1" selector-expression="payload.subject matches '^.*channel1.*$'"/> 
    <int:recipient channel="channel2" selector-expression="payload.subject matches '^.*channel2.*$'"/> 
    </int:recipient-list-router>  

    <util:properties id="javaMailProperties"> 
    <prop key="mail.pop3.socketFactory.fallback">false</prop> 
    <prop key="mail.debug">false</prop> 
    </util:properties> 
</beans> 

基本的に私はそれに応じて指示メッセージや簡単なrecipient-list-router読み込みinbound-channel-adapterを持っています。

私がアプリケーションを起動すると、正常に動作します。ただし、最初の電子メールを処理した後、ハングアップすることがあります。デバッグ出力は次のようになります。

19260 [task-scheduler-1] DEBUG org.springframework.integration.mail.Pop3MailReceiver - connecting to store [pop3://username:[email protected]/Inbox] 
DEBUG POP3: mail.pop3.apop.enable: false 
DEBUG POP3: mail.pop3.disablecapa: false 
DEBUG POP3: connecting to host "mailhost.example.com", port 110, isSSL false 
+OK Qpopper (version 4.0.5) at cobweb starting. 
CAPA 
+OK Capability list follows 
TOP 
USER 
LOGIN-DELAY 0 
EXPIRE 0 
UIDL 
RESP-CODES 
AUTH-RESP-CODE 
X-MANGLE 
X-MACRO 
X-LOCALTIME Wed, 10 Aug 2016 11:50:57 -0700 
IMPLEMENTATION Qpopper-version-4.0.5 
. 
DEBUG POP3: authentication command trace suppressed 
DEBUG POP3: authentication command failed 
QUIT 
+OK Pop server at cobweb signing off. 
30529 [task-scheduler-1] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'errorChannel' 
30531 [task-scheduler-1] DEBUG org.springframework.integration.channel.PublishSubscribeChannel - preSend on channel 'errorChannel', message: ErrorMessage [payload=org.springframework.messaging.MessagingException: failure occurred while polling for mail; nested exception is javax.mail.AuthenticationFailedException: [IN-USE] /var/spool/maildrop/.program_name.pop lock busy! Is another session active? (11), headers={id=43817279-7717-f4d7-971a-3c283e2dbec3, timestamp=1470849586452}] 
30531 [task-scheduler-1] DEBUG org.springframework.integration.handler.LoggingHandler - _org.springframework.integration.errorLogger.handler received message: ErrorMessage [payload=org.springframework.messaging.MessagingException: failure occurred while polling for mail; nested exception is javax.mail.AuthenticationFailedException: [IN-USE] /var/spool/maildrop/.program_name.pop lock busy! Is another session active? (11), headers={id=43817279-7717-f4d7-971a-3c283e2dbec3, timestamp=1470849586452}] 
30534 [task-scheduler-1] ERROR org.springframework.integration.handler.LoggingHandler - org.springframework.messaging.MessagingException: failure occurred while polling for mail; nested exception is javax.mail.AuthenticationFailedException: [IN-USE] /var/spool/maildrop/.program_name.pop lock busy! Is another session active? (11) 
    at org.springframework.integration.mail.MailReceivingMessageSource.receive(MailReceivingMessageSource.java:131) 
    at org.springframework.integration.endpoint.SourcePollingChannelAdapter.receiveMessage(SourcePollingChannelAdapter.java:209) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.doPoll(AbstractPollingEndpoint.java:245) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint.access$000(AbstractPollingEndpoint.java:58) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:190) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$1.call(AbstractPollingEndpoint.java:186) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$Poller$1.run(AbstractPollingEndpoint.java:353) 
    at org.springframework.integration.util.ErrorHandlingTaskExecutor$1.run(ErrorHandlingTaskExecutor.java:55) 
    at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) 
    at org.springframework.integration.util.ErrorHandlingTaskExecutor.execute(ErrorHandlingTaskExecutor.java:51) 
    at org.springframework.integration.endpoint.AbstractPollingEndpoint$Poller.run(AbstractPollingEndpoint.java:344) 
    at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) 
    at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: javax.mail.AuthenticationFailedException: [IN-USE] /var/spool/maildrop/.program_name.pop lock busy! Is another session active? (11) 
    at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:207) 
    at javax.mail.Service.connect(Service.java:295) 
    at javax.mail.Service.connect(Service.java:176) 
    at javax.mail.Service.connect(Service.java:125) 
    at org.springframework.integration.mail.AbstractMailReceiver.connectStoreIfNecessary(AbstractMailReceiver.java:286) 
    at org.springframework.integration.mail.AbstractMailReceiver.openFolder(AbstractMailReceiver.java:297) 
    at org.springframework.integration.mail.AbstractMailReceiver.receive(AbstractMailReceiver.java:319) 
    at org.springframework.integration.mail.MailReceivingMessageSource.receive(MailReceivingMessageSource.java:112) 
    ... 19 more 

それは、これらの例外それが接続しようとするたびに吐き出し、時には2分まで、時間の(一見)ランダムな量のために、このループに留まります。ただし、メッセージを処理した直後にファイルを接続することもあります。メッセージを処理することだけが失敗に終わります。

その接続への接続を長時間保持しようとしていますか?電子メールを取得した直後に接続を切断するように指示することはできますか?

+0

各ポーリング後に接続を閉じる必要があります。 'mail.debug'を' true'に設定しようとしましたか? –

+0

@GaryRussellがエラーログを更新しました。認証コマンドが失敗したようですか?それはメールサーバーの側で何かができますか? – nicholas79171

+0

これは、失敗したセッションからのデバッグログのようです。以前の(成功した)ものおよび/またはサーバーログ(存在する場合)を調べる必要があります。 –

答えて

0

それは、サーバー側の問題であったことが分かります。 IMAPをサポートしているプロダクショングレードのメールサーバーに切り替えた後、問題は解決されました。

関連する問題