我有一个演员计算数据在一边,称之为A.另一方面,我有演员B接收演员A的数据.B的全部目的是检查数据是否相关并采取行动即,即。 Actor B必须从DB源加载数据并将其与A的结果进行比较。
B加载的数据几乎从未改变过。它必须在应用程序启动时加载一次,然后actor应该使用它可以使用的任何缓存版本。
有没有办法与Akka一起做?
答案 0 :(得分:0)
在计算数据后,只需从A发送消息到B.之后,B可以根据验证结果切换到“已验证”或“未验证”状态,并根据其状态对后续消息做出反应。
如何使用额外信息处理不同状态的示例:
class MyDBActor extends Actor {
def receive = starting
def starting = {
case data:DataFromA =>
dbData = <load data from DB>
if (<data is OK>)
context.become(verified(dbData))
else
context.become(unverified)
}
def verified(dbData:DataFromDB) = {
case whatevermessage =>
< do something with message and data>
}
def unverified => {
case _ => <throw exception, log unverified access, etc>
}
}
另一种选择可能是使用数据库数据来实例化一个新的actor,如果且只有数据是正确的,它将被实例化,并使程序的其他部分试图与该actor交谈。如果未验证数据,则该actor不存在(但您将以某种方式处理异常)。