我需要一个很少更改的全局变量(单例)。实际上它只有在actor重新启动时才会改变,并重新初始化变量。由于我不能在伴生对象中使用单例 val 来执行此操作,因此我必须将其声明为 var(可变)。
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 进程邮箱一个接一个)。
我不知道如何在不牺牲性能的情况下做到这一点。任何想法?