如果我向远程节点发送了大量消息并立即调用erlang:disconnect_node/2
以断开连接,是否有可能某些消息无法通过线路?换句话说,无论等待消息,该方法都会执行残酷的断开连接吗?
答案 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,对不起),或在断开连接之前使用确认消息。