我正在尝试实现一个调度程序参与者,它要么处理请求,要么在发生故障时将处理委托给另一个参与者(实际上它是指数退避算法)。调度员参与者有一个布尔变量,用于决定如何路由处理。
在演员中保持某种状态是否正确?可能会出现什么问题?我应该使用交易者(akka)还是 STM 来避免问题?(我正在使用 akka 演员)
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
}
}