[英]Working with Akka AbstractActorWithTimers from Java API
我正在尝试在Java(很好,Groovy,实际上)应用程序内使用新的Akka Timers API,当然要使用Akka / Java API(我正在使用'com.typesafe.akka:akka-actor_2.11:2.5.4'
坐标是'com.typesafe.akka:akka-actor_2.11:2.5.4'
)。 当我尝试创建新的按计时器操作的actor时,出现编译器错误:
class MyTimeAwareActor extends AbstractActorWithTimers {
@Override
void onReceive(Object message) {
if(message in StartNewTimer) {
timers.startPeriodicTimer(/* blah whatever */)
}
}
}
此代码在使用@Override
注释时产生编译器错误:
“ 类
com.example.myapp.MyTimeAwareActor
中的Groovy:Method'onReceive'不会从其超类或接口中重写方法,而是使用@Override进行注释。
这告诉我我使用的这个演员不正确。 我要做的就是每次actor收到StartNewTimer
消息时启动一个新计时器(执行某些操作)。
有什么想法可以解决该编译器错误吗?
用createReceive
替换onReceive
(以下内容在Java中;您可以将其转换为Groovy):
@Override
public Receive createReceive() {
return receiveBuilder()
.match(StartNewTimer.class, message -> {
getTimers().startPeriodicTimer(/* blah whatever */);
})
.build();
}
onReceive
未在AbstractActorWithTimers
或其父AbstractActor
中定义( onReceive
在UntypedAbstractActor
定义)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.