:rpc.call失败,全局注册节点别名

时间:2015-05-10 11:17:24

标签: erlang elixir

我有一个Elixir项目,它使用Erlang全局模块全局注册节点:

:global.register_name(:my_node, self)

从集群中的另一个节点,我可以使用全局别名获取已注册节点的pid:

:global.whereis_name :my_node

但是我无法使用全局别名发出rpc调用。以下失败:

:rpc.call(:my_node, Foo.Bar, :new, ["hello"])
>> {:badrpc, :nodedown}

如果我使用完整的节点名称,我能够发出rpc调用。以下作品:

:rpc.call(:"mynode@127.0.0.1", Foo.Bar, :new, ["hello"])

是否可以在rpc调用中使用全局别名?

1 个答案:

答案 0 :(得分:2)

全局注册表用于注册流程。所以当你打电话时:

:global.register_name(:my_node, self)

您正在全球注册当前流程(由self提供)。

没有节点名称注册,因为它们的名称已在全球范围内可用。因此,帖子中的最后一个片段是正确的方法。