我想实现一个调度员演员,要么处理请求,要么委托处理另一个演员在失败的情况下(实际上是指数退避算法)。调度员actor有一个布尔变量,用于决定如何路由处理。斯卡拉演员和共享状态
在演员中维护一些状态是否正确?会发生什么问题?我应该使用交易者(akka)还是STM来避免问题? (我用阿卡演员)
class DispatcherActor extends Actor {
var backoff = false
def receive = {
case SendMessage(registrationId, message) => {
if (backoff) {
//put on the queue
backoffManagerActor ! AddMessageToQueue(message)
} else {
httpClient.sendNotificationToClient(message, this)
}
}
case BackoffCompleted => //set backoff to false
backoff = false
}
def otherMethod = {
backoff=true
}
}
您应该_never_将您的actor实例传递给其他代码,这违反了演员模型。传递“自我”参考(ActorRef)并发回消息。 – 2011-02-13 20:54:47