La aplicación define un PingPongServer
: un actor al cual si le envía el mensaje ping
responde pong
.
Prestar atención a los siguientes elementos:
- Aplicaciones
- Workers - GenServer en este caso
- Supervisores
- Alias locales y globales
iex -S mix
iex --sname foo -S mix
Luego se pueden utilizar las siguientes herramientas para hacer comunicación entre VMs:
Node.spawn
:rpc.call
iex --sname pingpong -pa _build/dev/lib/ping_pong/ebin --app
iex --sname a -pa _build/dev/lib/ping_pong/ebin/ --app ping_pong --erl "-config config/a"
iex --sname b -pa _build/dev/lib/ping_pong/ebin/ --app ping_pong --erl "-config config/b"
iex --sname c -pa _build/dev/lib/ping_pong/ebin/ --app ping_pong --erl "-config config/c"
Tener en cuenta que por lo definido en cada uno de los archivos de configuración y de la documentacion de erlang, la consola se va a quedar esperando hasta que las 3 VMs estén levantadas antes de empezar.
Probar matar una vm y ver que después el proceso renace en la siguiente de menor prioridad
NOTA
En los archivos de configuracion se va a describir donde estaran los distintos nodos que se describen de la siguiente manera @, donde el nombre del nodo en este ejemplo es el nodo a, b o c, y el host es nuestra maquina, identificado en linux con el nombre del equipo que tenemos. Podemos ver esto haciendo
cat /etc/hostname
En windows se puede ver nuestro hostname por medio del comando del ipconfig
ipconfig /all
iex --name [email protected] --cookie cookie
luego solo basta levantar el observer con :observer.start y vamos a poder ver todos los nodos