Ho trascorso l'ultima settimana di approfondimento nei documenti di Akka e finalmente ho capito quali sono i sistemi di attori, e i problemi che risolvono.
La mia comprensione (e l'esperienza con) i tradizionali broker di messaggi JMS / AMQP è che esistono per fornire quanto segue:
- Elaborazione asincrona tra produttore e consumatore; e
- Garanzia di consegna dei messaggi, inclusi persistenza, tentativi e fallback
Ma Akka non fornisce questo, senza tutta l'infrastruttura necessaria e l'overhead operativo?
- In Akka, tutte le comunicazioni degli attori sono asincrone e non bloccanti; e
- In Akka,
SupervisorStrategies
esiste per eseguire tentativi, fallback ed escalation. Gli attori possono essere configurati in modo da persistere praticamente in qualsiasi tipo di negozio, se anche questo è un requisito.
Quindi questo mi chiede: se la mia app utilizza Akka, ho mai bisogno di portare i broker JMS / AMQP (ad esempio ActiveMQ, RabbitMQ, Kafka) nell'immagine? In altre parole, c'è mai un caso d'uso in cui una nuova app basata su Akka meriterebbe anche l'introduzione di un cluster di broker JMS / AMQP nuovo ? Perché o perché no?
L'unico argomento potrebbe essere che forse la mia app Akka deve integrarsi con un altro sistema. Ma in questo caso, il modulo Akka-Camel consente ad Akka di attingere esaustivamente al Camel, elenco quasi infinito di funzionalità di integrazione (TCP, FTP, ZeroMQ, l'elenco può continuare all'infinito ...).
Pensieri?