J'ai passé la semaine dernière à plonger profondément dans les documents Akka et enfin comprendre ce que sont les systèmes d'acteurs et les problèmes qu'ils résolvent.
Ma compréhension (et mon expérience avec) les courtiers de messages JMS / AMQP traditionnels est qu'ils existent pour fournir les éléments suivants:
- Traitement asynchrone entre producteur et consommateur; et
- Garantie de livraison des messages, y compris la persistance, les tentatives et les replis
Mais Akka ne fournit-il pas cela, sans toute l'infrastructure et les frais généraux nécessaires?
- À Akka, toutes les communications des acteurs sont asynchrones et non bloquantes; et
- À Akka,
SupervisorStrategies
existent pour effectuer une nouvelle tentative, un repli et une escalade. Les acteurs peuvent être configurés pour persister dans pratiquement n'importe quel type de magasin, si cela est également une exigence.
Cela me fait donc me demander: si mon application utilise Akka, ai-je un jour besoin de faire intervenir des courtiers JMS / AMQP (par exemple ActiveMQ, RabbitMQ, Kafka)? En d'autres termes, existe-t-il un cas d'utilisation où une nouvelle application basée sur Akka justifierait également l'introduction d'un nouveau cluster de courtiers JMS / AMQP? Pourquoi ou pourquoi pas?
Le seul argument serait que mon application Akka doit peut-être s'intégrer à un autre système. Mais dans ce cas, le module Akka-Camel permet à Akka de puiser dans la liste exhaustive et presque infinie de capacités d'intégration de Camel (TCP, FTP, ZeroMQ, la liste s'allonge encore et encore ...).
Pensées?