Статьи

Отправка электронной почты с актерами Java и Akka

Akka — это параллельная среда, написанная Scala .

Здесь я демонстрирую пример приложения для отправки писем с помощью Akka и реализованный на Java.

Причины я решил использовать фреймворк Akka кроме параллелизма.

  • Встроенная конфигурируемая стратегия супервизора для мониторинга работающих детей и определения того, какая политика применяется в случае возникновения исключения.
  • Может перепланировать доставку, когда приложение выдает какое-то конкретное исключение.
  • Использование актерских маршрутизаторов и позволяет им использовать пул актерских соединений.

Вот как можно создать стратегию надзора.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class EmailServiceActor extends UntypedActor { 
   private static SupervisorStrategy strategy = 
       new OneForOneStrategy(10, Duration.create("1 minute"), 
           new Function<Throwable, Directive>() { 
             @Override 
             public Directive apply(Throwable t) { 
               if (t instanceof MessagingException) { 
                 return resume(); 
               } else if (t instanceof Exception) { 
                 return stop(); 
               } else
                 return escalate(); 
               
             
           }); 
   @Override 
   public void onReceive(Object message) { 
     getContext().actorOf(new Props(EmailServiceWorker.class)).tell(message, self()); 
   
   @Override 
   public SupervisorStrategy supervisorStrategy() { 
     return strategy; 
   
 }

Вот как детский создать

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
class EmailServiceWorker extends UntypedActor { 
   @Override 
   public void onReceive(Object message) { 
     try
       EmailService emailService = new EmailService(); 
       emailService.sendEmail(); 
     } catch (IOException e) { 
       e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. 
     } catch (MessagingException e) { 
       e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. 
     
   
   @Override 
   public void preStart() { 
 //    getContext().system().scheduler().scheduleOnce(Duration.create(5, TimeUnit.SECONDS), self(), "emailWorker", getContext().system().dispatcher(), null); 
   
   @Override 
   public void postStop() { 
   
 }

Пример приложения — https://github.com/rajithd/email-service-akka

Ссылка: Отправка электронной почты с актерами Java и Akka от нашего партнера JCG Раджита Деланта в блоге Looping with Rajith… .