在哪里放置定期执行的更新演员内部状态的计算?
Where to put calculation executed regularly that updates actor's internal state?
我正在学习 Scala 和 Akka。
在我试图解决的问题中,我希望演员读取实时数据流并执行特定计算以更新其状态。
我每 3 秒通过调度程序向 actor 发送一个请求 return 到它的状态。
虽然我已经实现了几乎所有的东西,但我的演员有一个广播和接收器以及更新状态的功能。我不完全确定该怎么做,我可能会将计算始终在 actor 内的单独线程中运行,但我现在想在 scala 中是否有更优雅的方法来实现这一点。
我建议把工作分给两个演员。父 actor 将管理子 worker actor 并跟踪状态。它向子工作者 actor 发送消息以触发数据处理。
子工作者 actor 处理数据流 - 不要忘记将处理包装到 Future
中,这样它就不会阻止 actor 处理消息。它还会定期向 master 发送当前状态的消息。所以child worker是无状态的,它会在状态改变时发送通知。
想知道整体工作的现状,问大师。原则上,您可以将其合并为一个向自身发送状态消息的参与者。我不会直接更新状态以避免并发问题。原因是 Future
中的数据处理工作 运行 可能 运行 在与消息处理不同的线程上。
我正在学习 Scala 和 Akka。
在我试图解决的问题中,我希望演员读取实时数据流并执行特定计算以更新其状态。
我每 3 秒通过调度程序向 actor 发送一个请求 return 到它的状态。
虽然我已经实现了几乎所有的东西,但我的演员有一个广播和接收器以及更新状态的功能。我不完全确定该怎么做,我可能会将计算始终在 actor 内的单独线程中运行,但我现在想在 scala 中是否有更优雅的方法来实现这一点。
我建议把工作分给两个演员。父 actor 将管理子 worker actor 并跟踪状态。它向子工作者 actor 发送消息以触发数据处理。
子工作者 actor 处理数据流 - 不要忘记将处理包装到 Future
中,这样它就不会阻止 actor 处理消息。它还会定期向 master 发送当前状态的消息。所以child worker是无状态的,它会在状态改变时发送通知。
想知道整体工作的现状,问大师。原则上,您可以将其合并为一个向自身发送状态消息的参与者。我不会直接更新状态以避免并发问题。原因是 Future
中的数据处理工作 运行 可能 运行 在与消息处理不同的线程上。