Соединение узла Феникс / Эрланг - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть узел Elixir Phoenix, запущенный на одной машине, и узел Erlang на другой.В узле Erlang есть процесс с именем «rec», который принимает кортеж из трех элементов: атома и двух списков.Когда я запускаю этот код на узле Elixir:

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

он запускается по мере необходимости, но когда я запускаю его с контроллера Phoenix, он возвращает ошибку, подобную этой:

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

Что я должен сделать, чтобы запустить его правильно?

1 Ответ

0 голосов
/ 26 февраля 2019

Это происходит потому, что модуль SlrRecorderApiWeb.CameraController не загружен на рассматриваемом узле Erlang: когда вы отправляете функцию fn для запуска на другом узле, модуль, для которого она определена, должен быть загружен на оба узла.

Хорошей новостью является то, что вам не нужно здесь использовать функцию, вы можете просто использовать:

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

, и сообщение будет отправлено процессу с именем recна другом узле.

...