2016-09-21 8 views
0

У меня есть нижеследующий код в классном классе, я хочу асинхронно вызывать этот метод из различных других классов groovy.Асинхронное уведомление по электронной почте в groovy

public void sendNotification(){ 

     //async true 
     String from = ApplicationConfig.email_From; 
     String sendTo = ApplicationConfig.email_To; 
     String host = ApplicationConfig.email_Host; 
     String subject = ApplicationConfig.email_Subject; 
     String textToSend = ApplicationConfig.email_Text; 

     Properties properties = System.getProperties(); 
     properties.setProperty("mail.smtp.host", host); 
     Session session = Session.getDefaultInstance(properties); 

     try{ 

      MimeMessage message = new MimeMessage(session); 
      message.setFrom(new InternetAddress(from)); 
      message.addRecipients(Message.RecipientType.TO, InternetAddress.parse(sendTo)); 
      message.setSubject(subject); 
      message.setText(textToSend); 
      Transport.send(message); 

     }catch (MessagingException mex) { 
      mex.printStackTrace(); 
     } 
    } 

До сих пор я не мог найти ничего, что соответствует моим требованиям, есть некоторые плагины в Грааль, но я не использую Grails.

ответ

2

Просто используйте ExecutorService

ExecutorService pool = Executors.newFixedThreadPool(2) 

def sender = { -> 
    Properties properties = System.getProperties(); 
    properties.setProperty("mail.smtp.host", ApplicationConfig.email_Host); 
    Session session = Session.getDefaultInstance(properties); 
    try{ 
     MimeMessage message = new MimeMessage(session); 
     message.setFrom(new InternetAddress(ApplicationConfig.email_From)); 
     message.addRecipients(Message.RecipientType.TO, InternetAddress.parse(ApplicationConfig.email_To)); 
     message.setSubject(ApplicationConfig.email_Subject); 
     message.setText(ApplicationConfig.email_Text); 
     Transport.send(message); 
    }catch (MessagingException mex) { 
     mex.printStackTrace(); 
    } 
} 

public void sendNotification() { 
    pool.submit(sender) 
} 
Смежные вопросы