2
如果我向远程节点发送了很多消息,并且立即调用erlang:disconnect_node/2
来删除连接,有没有机会发送一些消息不通过线路?换句话说,无论等待消息,该方法是否会执行残酷的断开连接?是否erlang:disconnect_node/2立即停止排队的消息?
如果我向远程节点发送了很多消息,并且立即调用erlang:disconnect_node/2
来删除连接,有没有机会发送一些消息不通过线路?换句话说,无论等待消息,该方法是否会执行残酷的断开连接?是否erlang:disconnect_node/2立即停止排队的消息?
不,即使有两个本地节点!
设置:我得到了一个节点[email protected]
,在虚拟接收打印循环运行时,注册为a
。在另一个节点上,我跑
([email protected])1> [{a, [email protected]} ! X || X <- lists:seq(0,10000)], erlang:disconnect_node([email protected]).
也就是说,很多消息,然后一个残酷的断开。
结果:接收器在10次运行中仅打印一次完整的10001消息。
所以,你绝对没有任何保证,接收者得到了所有的消息。你应该使用另一种技术(erlang的新手,抱歉),或者在断开连接之前使用确认消息。