问题描述
关于在actor内设置计时器的文档不太清楚。这是我可以找到的最接近的信息:Scheduling messages to self。但是,从那里还不清楚我们是否可以在actor内创建一个内部计时器,该计时器仅每5秒触发某个actor的方法(例如,检查actor的状态并对其变化做出反应),而不接收和发送事件。
如果可以设置这种计时器,它的可靠性如何? (例如,如果它可能失败,而演员会继续起作用,则否则)
如果还可以设置这种计时器,是否应该通过触发的方法或其他参与者的方法停止和(重新)启动计时器?
解决方法
如果通过
例如,每5秒触发某个演员的方法(例如检查演员的状态并对其变化做出反应),而无需接收和发送事件
您的意思是“在不向演员发送消息的情况下,在演员内安排要调用的方法”,那么答案是否定的。
仅应在响应发送给演员的消息(或在演员生成时,但这可以说是有效的消息)的直接响应中执行演员中的方法。否则,就是(至少)放弃参与者模型可以做出的几乎所有保证。