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… .