如何在创建时初始化Azure Service Fabric Actor?
我尝试使用初始化方法重载actor构造函数,但它没有用。
我必须在创建actor之后从客户端调用初始化方法,或者有一种方法可以让actor在创建过程中自动初始化自己吗?
答案 0 :(得分:2)
当您在其上调用方法时,首先会创建一个Actor。因此,如果您需要初始化尚不存在的Actor,您需要确保它首先变为活着状态。它本身不能做到这一点。
您可以创建一个方法来初始化Actor并使其成为Actor接口的一部分。
您还可以使用OnActivateAsync
方法触发每次激活。
详细了解Actor生命周期here。
答案 1 :(得分:0)
Actor框架在第一次创建Actor和激活已停用且处于休眠状态的Actor之间没有区别。这两个操作都将创建一个Actor实现的新实例(调用.ctor),然后调用OnActivateAsync
。它在执行分派给Actor的任何方法之前执行此操作。没有办法在不调用Actor接口上的方法的情况下创建Actor的实例,它是基础ActorBase
和ActorManager
处理的所有部分消息。
另外,根据您为演员选择的持久性类型(None
,Volatile
或Persisted
),slighlty,托管Actor的ActorService存储持久性密钥{ {1}}与Actor / ActorService相关联。这就是ActorService"知道"关于它的演员也是如此。当你向ActorService询问已知的Actors时,它会查询它的StateProvider
如果你想第一次运行一些初始化代码 ,并且只有第一次激活一个Actor,那么你可以在IActorStateProvider
中为该Actor添加一个状态键:
OnActivateAsync