リクエストを処理するか、失敗した場合に別のアクターに処理を委譲するディスパッチャー アクターを実装しようとしています (実際には指数バックオフ アルゴリズムです)。ディスパッチャー アクターには、処理のルーティング方法を決定するために使用されるブール変数があります。
アクターの状態を維持するのは正しいですか? どのような問題が発生する可能性がありますか? 問題を回避するには、トランザクター (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
}
}