【问题标题】:Is it "ok" to allow an actor to replace a shared immutable read only state periodically?允许参与者定期替换共享的不可变只读状态是否“可以”?
【发布时间】:2014-08-31 16:59:18
【问题描述】:

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

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

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

【问题讨论】:

  • “这个演员每 1 分钟替换一个共享的不可变全局状态”对我来说听起来不是很不可变 :)
  • 他的意思是对象是不可变的,但是你可以用另一个不可变对象替换一个不可变对象

标签: multithreading scala akka actor


【解决方案1】:

如果你有一些状态想要让一个actor更新,但你不想通过一个actor来访问,那么你可以考虑使用一个akka代理。

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

【讨论】:

    猜你喜欢
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多