Llegó la hora de escribir sobre el proyecto:
https://github.com/ajlopez/Aktores
Estoy implementando los primeros pasos hacia un modelo de actores, con pasaje de mensajes, tomando ideas de Akka. Ya había trabajado algo en Node.js, y en C# directo, teniendo actores que se mandan mensajes entre sí, pero esta vez quiero seguir el camino de Akka, paso a paso, como por ejemplo, tener nombres de actores, en un árbol, sistema de actores distribuidos, y la supervisión de agentes.
El estado del proyecto a hoy:
Veamos la implementación actual de actores:
Primero, un Actor es una clase abstracta, a implementar en cada caso por nosotros en cada sistema de actores que armemos. El resto del sistema no conversa con un actor directamente, sino a través de un ActorRef. Por ejemplo, para enviar un mensaje, hay un método Tell en el ActorRef. Internamente, tampoco lo envía a procesar al actor directamente, sino que cada actor tiene una Mailbox, y es a ese componente al que el ActorRef envia el mensaje. El objeto Actor es un objeto pasivo: no consulta la Mailbox directamente, sino que hay hilos de ejecución que van a ir consultando las tareas pendientes a hacer (como enviar un mensaje X a un actor A). Y el sistema internamente se asegura que al actor A sólo llegue a procesar UN mensaje por vez, para que el programador del actor no tenga que preocuparse por concurrencia desde múltiples hilos. Vean que, notablemente, el Actor no tiene una referencia a Mailbox. Pero eso es tema para próximos posts.
Nos leemos!
Angel “Java” Lopez