簡體   English   中英

如何使用 rebar3 版本將 gen_server 作為獨立節點托管?

[英]How to host a gen_server as a standalone node using rebar3 release?

我有一個rebar3項目,它有一些gen_server實現。 我想以這樣的方式編寫一個應用程序,該版本將把gen_server作為一個 Erlang 節點在守護進程模式下托管。


例子

有一些 gen 服務器:

%% file src/my_gen_server.erl
-module(my_gen_server).
-behaviour(gen_server).
...

我想編譯項目

$ rebar3 release

然后將其作為守護進程運行:

_build/prod/rel/myapp/bin/myapp daemon --setcookie biscuit

在一個單獨的終端 session 啟動 Erlang 並連接到它:

$ erl -sname test -setcookie biscuit
1> gen_server:call(my_gen_server, test).
response

我該如何設置? 這個問題我的意思是:如何讓應用程序成為那個 gen 服務器,以及如何讓它接受來自其他節點的傳入消息,可能在不同的機器上?

我想您的意思是您有一個“應用程序”項目,並且您希望將該應用程序作為發布中的唯一應用程序。

按照文檔中的說明將relx部分添加到您的 rebar.config 並確保應用程序代碼是可訪問的,例如將其放在./apps/<application>/src/中。 通過此步驟,您將獲得一個 erlang 版本來啟動您的應用程序代碼。

在 your.app.src 文件中,您指定一個實現 應用程序行為Module ,通常該模塊啟動一個主管,但您可以直接在此處啟動您的gen_server 請記住,如果進程死亡,整個節點也會隨之死亡,這就是不鼓勵這樣做的原因。

關於您的最后一個問題,一旦您設置了分布式 erlang,您就可以使用{Name:: atom(), node()}: Message:: term()語法向節點中的注冊進程發送消息。 您也可以使用gen_servererpc中的方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM