多个读者 - Akka的单一作家

时间:2012-06-27 07:17:05

标签: actor akka

我想使用Akka在数据结构上实现多读者/单作者模式,但我陷入了演员模型的设计中。

我最初的想法是让一个主管演员接收外部请求(读或写)。读取请求将被转发给读取器actor以进行异步处理。写请求将等待所有读者完成,然后同步处理。

我的问题是如何实现“等待所有读者完成”部分。

我首先想到的是向主管保留一个柜台。每次主管将消息转发给读者时,计数器将递增。然后,读者在完成时将“我完成”消息发送回主管,然后减少计数器。但是,我认为这会导致死锁,因为“我完成”消息将与外部请求进入同一邮箱。如果主管同步处理写请求,则“我完成”将永远不会到达它。

我真的很困惑这个设计。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

根据上述评论。

向您的主管actor添加一个队列,以对传入的请求进行排队。当读者发回完成的消息后,将任务从队列中取出并交给读者。

答案 1 :(得分:0)

帖子很旧但可能对某人有所帮助。 使用带有Await的Futures和未来完成的位置(onComplete或onSuccess),处理写入操作。