Dan*_*ier 9 scala throttling actor akka
我有一个向自己发送消息的akka actor:
def receive = {
while (...) {
self ! "some message"
}
}
Run Code Online (Sandbox Code Playgroud)
我想使用Throttler来控制此actor发送给自己的消息流.
val throttler = system.actorOf(Props(new TimerBasedThrottler(15 msgsPer (1.minute))))
throttler ! SetTarget(Some(self))
Run Code Online (Sandbox Code Playgroud)
然后更改while循环以向throttler发送消息:
while (...) {
throttler ! "some message"
}
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何从actor内部访问"系统",以创建节流器.这该怎么做?有没有更好的方法?
你为什么不把儿童演员当作节制者?
def receive = {
val throttler = context.actorOf(Props(new TimerBasedThrottler(15 msgsPer (1.minute))))
throttler ! SetTarget(Some(self))
while (...) {
throttler ! "some message"
}
}
Run Code Online (Sandbox Code Playgroud)
因为如果计算机演员死了就让Throttler活着是没有意义的.
在Akka中,您可以使用Actor系统或Actor Context创建Actor,如:
class FirstActor extends Actor {
val child = context.actorOf(Props[MyActor], name = "myChild")
// plus some behavior ...
}
Run Code Online (Sandbox Code Playgroud)
context
是每个Actor可用的变量.
如果您使用actor创建actor,它将成为创建actor的受监督子项,请参阅Akka Docs有关监督和Actor Creation的更多信息.
归档时间: |
|
查看次数: |
7095 次 |
最近记录: |