Ho trascorso l'ultima settimana a immergermi nei documenti di Akka e finalmente ho capito quali sono i sistemi di attori e i problemi che risolvono.
La mia comprensione (ed esperienza con) i broker di messaggi JMS / AMQP tradizionali è che esistono per fornire quanto segue:
- Elaborazione asincrona tra produttore e consumatore; e
- Garanzia di consegna dei messaggi, inclusa persistenza, tentativi e fallback
Ma Akka non lo fornisce, senza tutte le infrastrutture necessarie e le spese operative?
- In Akka, tutte le comunicazioni degli attori sono asincrone e non bloccanti; e
- In Akka,
SupervisorStrategies
esistono per realizzare nuovi tentativi, fallback ed escalation. Gli attori possono essere configurati per persistere praticamente in qualsiasi tipo di negozio, se anche questo è un requisito.
Quindi questo mi chiedo: se la mia app utilizza Akka, ho mai bisogno di inserire i broker JMS / AMQP (ad esempio ActiveMQ, RabbitMQ, Kafka) nella foto? In altre parole, c'è mai un caso d'uso in cui una nuova app basata su Akka giustificherebbe anche l'introduzione di un nuovo cluster di broker JMS / AMQP? Perché o perché no?
L'unico argomento sarebbe che forse la mia app Akka deve integrarsi con un altro sistema. Ma in quel caso, il modulo Akka-Camel consente ad Akka di attingere all'esauriente, quasi infinita lista di capacità di integrazione di Camel (TCP, FTP, ZeroMQ, l'elenco potrebbe continuare all'infinito ...).
Pensieri?