- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经开始在 Scala 中使用 TypedActors,并且在做一些非常简单的事情时遇到了问题:我希望 Actor A 调用 Actor B 上的方法并在 Actor A 上的匿名函数中处理结果,但要确保:
class MyActorImpl extends MyActor {
// my mutable state
var myNumber = 0
// method proxied by TypedActor ref:
def doStuff(otherActor: OtherActor): Unit = {
otherActor.doOtherStuff onSuccess {
// oops this is no longer running in MyActorImpl..
// this could be on a concurrent thread if we
case i => processResult(i)
}
}
private def processResult(i: Int): Unit = {
myNumber = 0 // oops, now we are possibly making a concurrent modification
println(s"Got $i")
// fails with java.lang.IllegalStateException: Calling TypedActor.context
// outside of a TypedActor implementation method!
println(s"My context is ${TypedActor.context}")
}
}
import akka.actor._
import scala.concurrent._
val system = ActorSystem("mySystem")
import system.dispatcher
trait OtherActor {
def doOtherStuff(): Future[Int]
}
trait MyActor {
def doStuff(otherActor: OtherActor): Unit
}
class OtherActorImpl extends OtherActor {
var i = 0
def doOtherStuff(): Future[Int] = {
i += 1
Future {i}
}
}
class MyActorImpl extends MyActor {
// my mutable state
var myNumber = 0
// method proxied by TypedActor ref:
def doStuff(otherActor: OtherActor): Unit = {
otherActor.doOtherStuff onSuccess {
// oops this is no longer running in MyActorImpl..
// this could be on a concurrent thread if we
case i => processResult(i)
}
}
private def processResult(i: Int): Unit = {
myNumber = 0 // oops, now we are possibly making a concurrent modification
println(s"Got $i")
// fails with java.lang.IllegalStateException: Calling TypedActor.context
// outside of a TypedActor implementation method!
println(s"My context is ${TypedActor.context}")
}
}
val actor1: MyActor = TypedActor(system).typedActorOf(TypedProps[MyActorImpl])
val actor2: OtherActor = TypedActor(system).typedActorOf(TypedProps[OtherActorImpl])
actor1.doStuff(actor2)
最佳答案
您将 Actor 的状态暴露给外部世界,这是一件非常糟糕的事情。看这里:http://doc.akka.io/docs/akka/2.3.3/general/jmm.html第 9-10 节 Actors and shared mutable state lines 描述了你的情况。
@philwalk 已经描述了如何解决这个问题:Akka TypedActor - how to correctly handle async responses with context
关于scala - Akka TypedActor - 如何正确处理带有上下文的异步响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23306255/
在 Akka 1.3 或 2.0 中是否可以(甚至建议)将 PriorityExecutorBasedEventDrivenDispatcher 与 TypedActor 一起使用?我希望为特定消息类
我已经开始在 Scala 中使用 TypedActors,并且在做一些非常简单的事情时遇到了问题:我希望 Actor A 调用 Actor B 上的方法并在 Actor A 上的匿名函数中处理结果,但
大多数文档都提到使用 ReceiveActor然后是 Receive() 等方法.但是,一些文档提到继承自 TypedActor然后使用 IHandle 等接口(interface). 使用 Type
我尝试实现一个 TypedActor在 Java 中遵循 Typed Actors (Java) 上的示例.但我在挣扎。我已添加 akka-actor-1.1-M1.jar , akka-typed-
在使用 TypedActor.get(system) 时,intellij 会拼写错误“不明确的方法调用”,这里 system 的类型为 ActorSystem。我在TypedActor类文件的反编译
我是 Akka.net 的新手,我想创建一个 Active Objects 模式 TypedActor 来桥接我的 actor 代码和非参与者 代码。 我在 http://doc.akka.io/do
我试图理解为什么人们会在 typed actors 上使用无类型的 actor .我已经阅读了几篇关于此的文章,其中一些如下: What is the difference between Typed
我应该如何使用新的 akka.actor.typed API 而不是 akka 2.6 中已弃用的 TypedActor?文档中没有任何相关内容。 在 akka 2.5 中,我使用 TypedActo
我已经使用 Akka 和 Scala 大约一个月了,我对用消息替换显式接口(interface)感到有些困扰。考虑以下简单的 Akka Actor: case class DoMyHomework()
我在 Java 中使用 Akka 类型的 actor。我有一个 BatchManager ,它是与 Controller 的接口(interface),还有一个 JobManager ,它创建一些工作
我是一名优秀的程序员,十分优秀!