Мне нужна одна глобальная переменная (синглтон), которая будет меняться очень редко. На самом деле он изменяется только после перезапуска субъекта и повторной инициализации переменной. Поскольку я не могу сделать это с помощью singleton val в объекте-компаньоне, я должен объявить его как var (mutable).
object UserDatabase {
var dbConnection = "" // initializing db connection
}
Многие рекомендации, которые я читаю, всегда противоречат изменяемому состоянию. Поэтому я перемещаю переменную в класс и использую передачу сообщений для получения переменной.
class UserDatabase extends Actor{
val dbConnection = "" // initializing db connection locally
def receive = {case GetConnection => self.reply(dbConnection)}
}
Проблема в том, что dbConnection очень часто используется многими ... многими участниками, и постоянная отправка сообщений снижает производительность (так как akka обрабатывает почтовый ящик по одному).
Я не понимаю, как я могу сделать это без ущерба для производительности. Любая идея?