我想實現一個調度員演員,要麼處理請求,要麼委託處理另一個演員在失敗的情況下(實際上是指數退避算法)。調度員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