Erlang中文论坛

标题: 远程程序调用 [打印本页]

作者: high佬全    时间: 2015-2-4 02:22
标题: 远程程序调用
  有一段时间没有上过贴了。有部分原因是这几天没什么时间;不过主要的原因还是我找不到素材和近况在书上看到的
还是一知半解,所以不敢上贴。希望大家能继续跟帖,我会多加努力多找些好东西。
下面是我这次想介绍的,在本地调用和远程调用中主要是远程节点可能会失效,在《erlang编程指南》中有三种方法解决

1添加一个超时:
   remote_call(Message,Node) ->
       {facserver,Node} ! {self(),Message},
       receive
          {ok,Res} ->
               Res
          after 1000 ->
       end.

2就是链接到服务器进程用到 spawn_link/4,跟spawn/4不同。
     setup() ->
         process_flage(trap_exit,true),
         spawn_link('bar@ST',myrpc,server,[]).

3用monitor_node/2监控节点
      remote_call(Message,Node)  ->
          monitor_node(Node,true),
          {facserver,Node}  ! {self(),Message},
             receive
                {ok,Res} ->
                     monitor_node(Node,false),
                     Res;
                {nodedown,Node} ->
                     {error,node_down}
             end.
我觉得第三种方法是monitor_node(Node,true),向远程监控发送了消息,远程的监控根据节点的
存在与否发送不同的消息回来,所以在调用了monitor_node(Node,true)后就必须用monitor_node(Node,false),
来接收远程发来的消息。








欢迎光临 Erlang中文论坛 (https://bbs.erldoc.com/) Powered by Discuz! X3.3