二つのインスタンスを立ち上げ、rabbit1とrabbit2
二つのノードが通信できるように同じクッキを設定します。名前はそれぞれnode_one
とnode_two
とします。Node.self
でノード名を確認します
[root@rabbit1 ~]# iex --sname node_one --cookie chocolate-chip
[root@rabbit2 ~]# iex --sname node_two --cookie chocolate-chip
iex(node_one@rabbit1)1> Node.self
:node_one@rabbit1
iex(node_two@rabbit2)1> Node.self
:node_two@rabbit2
Node.connect :"node_two@rabbit2
コマンドで二つのノードをつなげると
Node.list
コマンドでお互いを確認することができます。
node_oneで定義した無名関数をNode.spawn関数でnode_twoにプロセスを作成して実行します。
iex(node_one@rabbit1)5> func = fn -> IO.inspect Node.self end
#Function<20.90072148/0 in :erl_eval.expr/5>
iex(node_one@rabbit1)6> Node.spawn(:"node_two@rabbit2", func)
:node_two@rabbit2
#PID<9000.70.0>