erlang:disconnect_node / 2会立即停止排队的消息吗?

时间:2012-09-03 22:54:29

标签: erlang

如果我向远程节点发送了大量消息并立即调用erlang:disconnect_node/2以断开连接,是否有可能某些消息无法通过线路?换句话说,无论等待消息,该方法都会执行残酷的断开连接吗?

1 个答案:

答案 0 :(得分:3)

不,即使有两个本地节点!

设置:我有一个节点a@super,在运行虚拟接收打印循环时,注册了a。在另一个节点上,我运行

(b@super)1> [{a, a@super} ! X || X <- lists:seq(0,10000)], erlang:disconnect_node(a@super).

即许多消息,然后是残酷的断开连接。

结果:接收方仅在10次运行中打印完整的10001条消息。

所以,你绝对不能保证接收者得到所有的消息。你应该使用另一种技术(新手在erlang,对不起),或在断开连接之前使用确认消息。