2017-11-24 6 views
1

String Integration DSL 메일을 사용하여 POP3 메일 서버에서 이메일을 수신합니다. 몇 시간 후에 폴러가 메일 서버를 폴링하는 것을 멈추고 이메일을 처리하지 않는다는 것을 알았습니다. 나는 메일 서버에 로그인하여 이메일이 메일 서버에 있는지 확인할 수 있습니다. 아래 내용을 검토하여 잘못된 내용을 알려주십시오.스프링 통합 폴러 스레드가 꺼내졌습니다.

@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