Pasé la última semana profundizando en los documentos de Akka y finalmente entiendo qué son los sistemas de actores y los problemas que resuelven.
Mi comprensión (y experiencia con) los corredores de mensajes JMS / AMQP tradicionales es que existen para proporcionar lo siguiente:
- Procesamiento asincrónico entre productor y consumidor; y
- Garantía de entrega de mensajes, incluida persistencia, reintentos y fallos
¿Pero Akka no proporciona esto, sin toda la infraestructura requerida y la sobrecarga operativa?
- En Akka, toda la comunicación del Actor es asíncrona y sin bloqueo; y
- En Akka,
SupervisorStrategies
existe para lograr el reintento, el retroceso y la escalada. Los actores pueden configurarse para persistir en prácticamente cualquier tipo de tienda, si este es un requisito también.
Esto me hace preguntarme: si mi aplicación usa Akka, ¿alguna vez tengo la necesidad de incorporar a los corredores JMS / AMQP (por ejemplo, ActiveMQ, RabbitMQ, Kafka) a la imagen? En otras palabras, ¿hay algún caso de uso en el que una nueva aplicación basada en Akka también garantice la introducción de un nuevo clúster de corredores JMS / AMQP? ¿Por qué o por qué no?
El único argumento sería que quizás mi aplicación Akka tiene que integrarse con otro sistema. Pero en ese caso, el módulo Akka-Camel le permite a Akka aprovechar la lista exhaustiva y casi infinita de capacidades de integración de Camel (TCP, FTP, ZeroMQ, la lista sigue y sigue ...).
Pensamientos?