我正在设计一个从无尽的流中消耗项目的演员,并且需要一种方法来控制它何时开始和停止使用消息。有没有一种通用的模式可以用演员来实现这样的可中断循环?我正在考虑让我的演员向自己发送消息。类似(伪Scala):
class Interruptible extends Actor {
val stream: Stream
val running: boolean
def receive = {
case "start" => {
running = true
consumeItem
}
case "stop" => {
running = false
}
case "consumeNext" => consumeItem
}
def consumeItem {
if (running) {
stream.getItem
this ! "consumeNext"
}
}
}
这是处理事情的最佳方式吗?
谢谢!