Passei a última semana mergulhando profundamente nos documentos da Akka e finalmente entendendo o que são os sistemas de atores e os problemas que eles resolvem.
Meu entendimento (e experiência) com os intermediários de mensagens JMS / AMQP tradicionais é que eles existem para fornecer o seguinte:
- Processamento assíncrono entre produtor e consumidor; e
- Garantia de entrega de mensagens, persistência, tentativas e fallbacks incluídos
Mas a Akka não fornece isso, sem toda a infraestrutura necessária e as despesas operacionais?
- No Akka, toda a comunicação com o ator é assíncrona e sem bloqueio; e
- Em Akka,
SupervisorStrategies
existem para realizar novas tentativas, fallback e escalação. Os atores podem ser configurados para persistir em praticamente qualquer tipo de loja, se isso também for um requisito.
Então, isso me fez pensar: se meu aplicativo usa o Akka, é necessário trazer os agentes JMS / AMQP (por exemplo, ActiveMQ, RabbitMQ, Kafka)? Em outras palavras, existe um caso de uso em que um novo aplicativo baseado em Akka também justificaria a introdução de um novo cluster do JMS / AMQP broker? Por que ou por que não?
O único argumento seria que talvez meu aplicativo Akka precise se integrar a outro sistema. Mas, nesse caso, o módulo Akka-Camel permite que a Akka aproveite a lista exaustiva e quase infinita de recursos de integração do Camel (TCP, FTP, ZeroMQ, a lista continua ...).
Pensamentos?