2017-11-24 5 views
1

私はString Integration DSLメールを使用してPOP3sメールサーバーからメールを受信して​​います。数時間後、私はポーラーがメールサーバーをポーリングするのをやめ、メールを処理しないことを確認します。私はメールサーバにログインし、そのメールがメールサーバにあることを見ることができます。以下の内容を確認して、間違った内容を教えてください。春の統合ポーラースレッドexhusted

@Bean 
    public IntegrationFlow emailFlow() { 
    return IntegrationFlows 
     .from(Mail.pop3InboundAdapter(config.getMailUri()) 
       .javaMailProperties(p -> 
    emailInflowConfiguration.javaMailProperties(p)) 
       .embeddedPartsAsBytes(true).maxFetchSize(1) 

    .shouldDeleteMessages(true) 
       .javaMailAuthenticator(config.mailAuthenticator()), 
      e -> e.autoStartup(true) 
       .poller(p -> p.fixedDelay(5000, 
        1000))) 
     .channel(MessageChannels.direct("pop3Channel")) 
     .handle("pop3Handler", "handleMessage") 
     .get(); 
    } 

答えて

0

待機スレッドとその場所を判断するにはスレッドダンプを参照する必要があります。

通常、応答待ちのコンポーネントがあるが、ダウンストリームのコンポーネントがない場合、スレッドプールは使い果たされます。おそらくそれはあなたのコードスニペットではありません。ですから、もっと情報が必要です。例えば、pop3Handlerはどうしますか?

+0

ここにスレッドダンプhttps://www.dropbox.com/s/onj89bawv02exha/thread.dump?dl=0があります.pop3Handlerは領収書メールを解析し、さらに下流にプッシュします。とにかく、私は_ ** catch(Throwableエラー){Thread.interrupted(); ** _ハンドラで – Sam