在Elixir中,如何在节点加入或离开集群时收到通知?

Mat*_*att 3 elixir

当节点加入或离开集群时,进程是否有办法接收消息?知道离开的原因也会很好.

Dog*_*ert 10

你可以用:net_kernel.monitor_nodes它.只需:net_kernel.monitor_nodes(true)从进程调用,现在该进程将在每次节点连接或断开连接时收到消息.

这是一个演示:

$ iex --name foo@127.0.0.1
iex(foo@127.0.0.1)1> :net_kernel.monitor_nodes(true)
:ok
Run Code Online (Sandbox Code Playgroud)

我用iex --name bar@127.0.0.1和运行了一个新节点Node.connect :"foo@127.0.0.1":

iex(foo@127.0.0.1)2> flush
{:nodeup, :"bar@127.0.0.1"}
:ok
Run Code Online (Sandbox Code Playgroud)

我终止了新节点:

iex(foo@127.0.0.1)3> flush
{:nodedown, :"bar@127.0.0.1"}
:ok
Run Code Online (Sandbox Code Playgroud)