Les acteurs AKKA, chaines et routeurs

Après avoir évoqué (ici et la) les acteurs, allons un peu plus loin. Le code de cette série est disponible dans github.

Chainer des acteurs

Les acteurs peuventent être imbriqués et se faire appel les uns aux autres. Il suffit pour ce faire de déclarer un référence à un second acteur dans le premier et à lui passer des messages.

Il est parfaitement possible de réaliser ce chainage en utilisant le pattern Ask, et ainsi récupérer des valeurs de retour.

Faire travailler plusieurs acteurs avec un routeur

Pour faire face à une charge important on peut diviser le travail sur un groupe d’acteurs identiques qui vont pouvoir répondre aux demandes à tour de rôle. L’utilisation des routeurs permet de paralléliser le travail et de le distribuer sur plusieurs acteurs. Les messages qui sont envoyés au routeur sont directement affecté à un des acteurs faisant partie du pool. Différentes stratégies de routage sont possible, la plus simple étant le roundrobin.

Il est parfois nécessaire de récupérer le résultat produit par les acteurs du pool. La première solution consiste à faire remonter les messages dans toute la hiérarchie, mais celà peut induire une complexité non négligeable. Pour simplifier, on peut en dehors du pool déclarer un acteur dont l’unique rôle est de collecter les résultats. Dans le cas ou on souhaite sérialiser les résultats, celà peremt de n’avoir qu’un seul thread qui réalise cette opération.

Au menu du prochain blog, on regardera les aspects distribués, et notament la possibilité de construire une architecture pub/sub.