erlang - 如何获取erlang集群中的当前节点名称?

标签 erlang

我在名为“message_passing”的模块中有一个名为“message/2”的函数,该函数在另一个函数 hash/1 中被调用。我需要 3 个名为 node1、node2 和 node3 的节点,但是当我想在名为“Current_Node”的变量中获取当前节点时,它不起作用。它显示错误。它无法在我的变量中获取当前节点。

** exception error: no true branch found when evaluating an if expression
     in function  message_passing:hash/1

hash(H)->
  Current_Node=node(),
   if
    Current_Node==node1->
     message(node2,H),
     message(node3,H);
    Current_Node==node2->
     message(node1,H),
     message(node3,H);
    Current_Node==node3->
     message(node1,H),
     message(node2,H)
   end

最佳答案

不确定您是否只是在代码中使用示例,但是 bif node() 不会返回仅包含节点名称的原子,还会返回主机名。

node() = node1@localhost.

这就是您的代码无法按您认为的那样工作的原因。

关于erlang - 如何获取erlang集群中的当前节点名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1672322/

相关文章:

erlang - ets 表继承和 trap_exit 消息

erlang - 如何在 Ejabberd 中过滤消息

multithreading - 从哪里开始认真的并发(多线程、并行?)编程

Erlang - 全局变量..是的,我知道,我知道

windows - RabbitMQ 出现 Nodedown 错误

list - Erlang 记录项列表

docker - 启用ssl时无法连接到rabbitmq管理控制台 - centos docker容器

debugging - 如何在 Erlang 中调试?

c++ - 使用 Erlang 消息传递在模拟中表示并发电梯

erlang - 如何使用 Yaws 在 appmod 中处理 WebSocket 消息?