Я пытаюсь реализовать субъект-диспетчер, который либо обрабатывает запрос, либо делегирует обработку другому субъекту в случае сбоя (на самом деле это экспоненциальный алгоритм отсрочки). Субъект диспетчера имеет логическую переменную, которая используется для решения, как направить обработку.
Правильно ли поддерживать в актере какое-то состояние? Какие проблемы могли случиться? Что мне следует использовать - транзактор (акка) или 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
}
}