2017-11-27 10 views
0

내 Jhipster 응용 프로그램에서 비동기식 sendemail() 메소드가 언젠가 deployment.I에 문제가 비동기 구성에 있다고 생각합니다. 누군가가 도와 줄 수 있습니까? 나는이 문제를 알아 낸Jhipster : 비동기식 sendemail() 언젠가 작동을 멈춘다

@Async 
public void sendEmail(String to, String subject, String content, boolean isMultipart, boolean isHtml) { 
    log.debug("Send e-mail[multipart '{}' and html '{}'] to '{}' with subject '{}' and content={}", 
     isMultipart, isHtml, to, subject, content); 

    // Prepare message using a Spring helper 
    MimeMessage mimeMessage = javaMailSender.createMimeMessage(); 
    try { 
     MimeMessageHelper message = new MimeMessageHelper(mimeMessage, isMultipart, CharEncoding.UTF_8); 
     message.setTo(to); 
     message.setFrom(jHipsterProperties.getMail().getFrom()); 
     message.setSubject(subject); 
     message.setText(content, isHtml); 
     javaMailSender.send(mimeMessage); 
     log.debug("Sent e-mail to User '{}'", to); 
    } catch (Exception e) { 
     log.warn("E-mail could not be sent to user '{}'", to, e); 
    } 
} 
+0

을 확인할 수 있습니다. –

+0

이것은 내 문제입니다. 나는 내 log.It에 오류가 발생하지 않습니다 시도하고 블록을 건너 뜁니다. 내가 아는 유일한 것은 갑자기 모든 비동기 메서드 실행을 중단한다는 것입니다. –

답변

1

:

다음은

public Executor getAsyncExecutor() { 
    log.debug("Creating Async Task Executor"); 
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); 
    executor.setCorePoolSize(jHipsterProperties.getAsync().getCorePoolSize()); 
    executor.setMaxPoolSize(jHipsterProperties.getAsync().getMaxPoolSize()); 
    executor.setQueueCapacity(jHipsterProperties.getAsync().getQueueCapacity()); 
    executor.setThreadNamePrefix("investhry-Executor-"); 
    return new ExceptionHandlingAsyncTaskExecutor(executor); 
} 

그리고 이메일의 방법을 보내기는 설명한다 비동기 구성에 대한 내 코드입니다. 문제는 Async Executer가 아닌 JAVA Mail API입니다.

transport.send() (결국 전자 메일을 보내는 데 사용되는)의 제한 시간 값은 무한합니다. 따라서 모든 비동기 스레드가 대기 상태에 있습니다. 당신이

 mailprop.put("mail.smtp.timeout", 1000); 

같은 몇 가지 값으로 변경하는 경우 당신은 우리가 그것을 분석 할 수 있도록 스택 추적 또는 오류 메시지를 추가하십시오이 솔루션 here