2

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

4

1 回答 1

3

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

设置:我有一个节点a@super,在女巫上运行一个虚拟的接收打印循环,注册为a. 在另一个节点上,我运行

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

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

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

因此,您绝对不能保证接收者收到所有消息。您应该使用另一种技术(erlang 新手,抱歉),或者在断开连接之前使用确认消息。

于 2012-09-03T23:35:23.333 回答