繁体   English   中英

Phoenix可以调用Elixir应用程序吗?

[英]Can Phoenix call an Elixir app?

我有一个运行在节点集群(n1@127.0.0.1和n2@127.0.0.1)上的Elixir应用程序,我们称之为Myapp.Server

在其中,我有一个模块run(parameter) ,其目标是联系Rest Web Service来获取一些数据(parameter是要获取的数据数量),将其转换为XML,然后将其放入一个文件中,该文件将最终转移到外部FTP。

调用

Myapp.Server.run(any_number)

因此给了我预期的结果。

我才刚刚开始学习Elixir和Phoenix,但是我脑海中不断浮现着两个问题,尽管我做了很多努力,但我找不到任何提示。 (或者我可能无法清楚地理解它)

所以我的两个问题

Elixir应用程序(在节点或节点群集上运行)可以广播到Phoenix应用程序吗? (例如,让最终用户知道结果)

另一方面,

我们是否可以通过单击在不同节点上运行的Phoenix页面中的按钮来启动启动Elixir模块的请求?

可以有人指导我或给我写一篇文章吗?

问候,

皮埃尔

PS:到目前为止,我正在阅读。

  • 编程Elixir 1.2,作者Dave Thomas
  • 克里斯·麦克科德(Chris McCord),布鲁斯·泰特(Bruce Tate)和何塞·瓦利姆(JoséValim)编写的《凤凰卫视》
  • EMSON先生的Udemy / Elixir简介

Phoenix应用程序可以绝对调用其他节点上的Elixir函数(只要网络允许通信即可)。 您的Phoenix应用程序只是另一个灵丹妙药应用程序,没有什么特别的。

要在另一个节点上调用函数,请参见Process.send函数,尤其是dest是元组的地方: {atom, node} 原子是另一个节点上的命名进程,而该节点是该节点的名称,在本例中为n1@127.0.0.1 即。 send({:SomeNamedProcess, "n1@127.0.0.1"} some_message)

GenServers还可以接受在callcast服务器类型中引用的{atom, node}元组。 即。 GenServer.call({:SomeNamedProcess, "n1@127.0.0.1"}, {:do_something, some_message})

另外,您可以使用[Node.spawn_link](例如send({:SomeNamedProcess, "n1@127.0.0.1"} some_message) )函数在另一个节点上生成即席函数。 即。 Node.spawn_link :"n1@127.0.0.1", fn -> IO.puts("Hello from #{inspect self}") end

您也可以选择在另一个节点上生成Elixir任务

选择其中一种技术实际上取决于您的确切用例。

您可能会对进程注册表感到不满意,因为它们是节点之间的另一种间接层:

https://m.alphasights.com/process-registry-in-elixir-a-practical-example-4500ee7c0dcc#.sws1ye9e9

https://medium.com/@StevenLeiva1/elixir-process-registries-a27f813d94e3#.5xvkv03k5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM