允许actor定期替换共享的不可变只读状态是否“ok”?

时间:2014-07-10 10:42:52

标签: multithreading scala akka actor

我有一个actor定期从另一个地方读取一些状态(比方说数据库)。现在我喜欢这样一个事实:我可以发送这个演员更多的消息,比如"请立即更新",或者#34;请刷新我的只读状态"或者"请重启自己"并且它有一个内置的"调度程序"正如akka为我提供的+收件箱。

所有这些功能都非常棒。但是我不喜欢我的整个系统有很多参与者(增加了我不需要的复杂性和可测试性复杂性)。现在我需要的是它已经更新的状态所以我想让这个actor替换一个共享的不可变全局状态,就像每1分钟一样,这对我和所有需要这种状态的组件只是直接访问这个状态是好的。没有理由将他们作为演员,他们可以访问它。

在演员的帮助下,这听起来是简单与多线程的合理组合吗?

1 个答案:

答案 0 :(得分:3)

如果你有某个州希望演员更新,但你不想通过演员访问,那么你可以考虑使用akka代理。

http://doc.akka.io/docs/akka/2.3.0/scala/agents.html