Phoenix / Erlang节点连接

问题描述 投票:1回答:1

我在一台机器上启动了Elixir Phoenix节点,在另一台机器上启动了Erlang节点。 Erlang节点有一个名为“rec”的进程,它接受一个由三个元素组成的元组:一个atom和两个charlists。当我在Elixir节点上运行此代码时:

Node.spawn_link(node_name, fn -> send(:rec, {:create, uuid, link}) end)

它根据需要运行,但是当我从Phoenix控制器运行它时,它会返回如下错误:

[error] Error in process #PID<14185.2561.0> on node :"[email protected]" with exit value:
{:undef, [{#Function<0.87309885/0 in SlrRecorderApiWeb.CameraController.add/2>, [], []}]}

我该怎么办才能正确运行它?

concurrency erlang elixir phoenix-framework distributed-computing
1个回答
2
投票

发生这种情况是因为模块SlrRecorderApiWeb.CameraController未加载到有问题的Erlang节点上:当您发送fn函数以在另一个节点上运行时,必须在两个节点上加载定义它的模块。

好消息是你不需要在这里使用一个函数,你可以使用:

send({:rec, node_name}, {:create, uuid, link})

并且消息将被发送到另一个节点上名为rec的进程。

© www.soinside.com 2019 - 2024. All rights reserved.