На прошлой неделе я глубоко погрузился в документы Akka и, наконец, понял, что такое системы актеров и какие проблемы они решают.
Мое понимание (и опыт работы) с традиционными JMS / AMQP брокерами сообщений заключается в том, что они существуют для обеспечения следующего:
- Асинхронная обработка между производителем и потребителем; и
- Гарантия доставки сообщений, включая постоянство, повторные попытки и откат
Но разве Акка не обеспечивает это без всей необходимой инфраструктуры и эксплуатационных расходов?
- В Akka все коммуникации Actor являются асинхронными и неблокирующими; и
- В Акке
SupervisorStrategies
существуют попытки выполнить повторную попытку, восстановление и эскалацию. Актеры могут быть настроены на сохранение практически в любом типе хранилища, если это тоже требование.
Поэтому у меня возникает вопрос: если мое приложение использует Akka, возникает ли у меня необходимость привлечь брокеров JMS / AMQP (например, ActiveMQ, RabbitMQ, Kafka)? Другими словами, существует ли когда-либо сценарий использования, когда новое приложение на основе Akka будет также оправдывать введение нового кластера JMS / AMQP-брокера? Почему или почему нет?
Единственным аргументом будет то, что, возможно, мое приложение Akka должно интегрироваться с другой системой. Но в этом случае модуль Akka-Camel позволяет Akka использовать исчерпывающий, почти бесконечный список возможностей интеграции Camel (TCP, FTP, ZeroMQ, этот список можно продолжать и продолжать ...).
Мысли?