我在 Akka 中有一个演员,它将处理消息以创建某些实体。这些实体上的某些字段是根据创建时数据库中其他实体的状态计算的。
我想避免创建参与者处理速度快于数据库能够持久化实体的竞争条件。这可能会导致数据不一致,如下所示:
- Actor 创建一个
Foo
并将其发送给其他 Actor 进行进一步处理和保存 - 要求演员创建另一个
Foo
. 由于第一个还没有保存,所以新的是根据数据库的旧内容创建的,从而创建了一个错误的Foo
.
现在,这种可能性非常小,因为Foo
s 的创建将被手动触发。但仍然可以想象,在高负载下双击可能会出现问题。谁知道明天Foo
是否会自动创建。
因此,我需要某种方法来告诉演员等待,并且只有在确认Foo
s 已保存后才能恢复其操作。
有没有办法让演员进入空闲状态,并告诉它在一段时间后恢复操作?
基本上,我想将邮箱用作消息队列,并控制队列的处理速度。