以下示例在调度消息时是否是经典的反模式?
class MyActor extends Actor {
private val scheduler = context.system.scheduler.schedule(3.seconds, 3.seconds, self, Tick)
def receive = {
case Tick => processMessage(....)
}
}
为什么我不能使用本地调度程序?
答案 0 :(得分:0)
我将尝试总结您为什么不应将调度程序用作默认模式。
HashedWheeltimer
的Akka调度程序,最适合安排短期在我们的项目中,我们正在使用"每个请求的演员"模式我们将消息从"请求演员"发送给其他演员。然后设置context.setReceiveTimeout(x seconds)
。如果我们没有收到任何响应x秒,我们认为这个消息丢失并根据我们使用的模式应用我们的逻辑"至少一次"或者"最多一次"递送