假设我有一些像{my_table, Id, Value}
这样的记录
我不断覆盖该值,使其保持连续的整数,如1,2,3,4,5等。
在分布式环境中,是否保证我的事件侦听器将接收所有值? (我不在乎订购)
答案 0 :(得分:1)
我还没有通过阅读源代码的部分来验证这一点,但似乎发送消息是更新过程的一部分,因此即使在非常快速的更改中,消息也应该总是出来。 (替代方案是让Mnesia将消息或队列更改排队并分批运行。我几乎肯定这不是发生的事情 - 要预测开始批量工作或排队的有利时刻的可变性太难了发送消息通常比在数据库中进行更改便宜得多。)
由于Erlang保证将消息传递到实时目的地,因此接近承诺每次Mnesia的更改最终都会被视为您可能获得的。在接收端无法保证消息的顺序(正如您所期望的那样),当然网络故障可能会使一组消息丢失(从发送者的角度呈现目的地以外的其他内容)