Java 8(よく、Groovy)のAkkaを使用していますcom.typesafe.akka:akka-actor_2.11:2.5.4
ここにあります。私が手に私はこれを実行するとJava Akka Scheduling API throw MissingMethodException
class CheckState {}
class StateChecker extends AbstractActor {
// For this question, it really doesn't matter what this actor does
}
class AppMaster extends AbstractActor {
ActorRef stateChecker
@Override
Receive createReceive() {
receiveBuilder()
.match(Init, { message ->
stateChecker = context.actorOf(Props.create(StateChecker, "yes", 20), "state-checker")
FiniteDuration startDur = Duration.Zero()
FiniteDuration freqDur = Duration.create(4000, TimeUnit.MILLISECONDS)
CheckState checkState = new CheckState()
ExecutionContextExecutor executor = context.system().dispatcher()
context.system().scheduler().schedule(startDur, freqDur, stateChecker, checkState,
executor)
})
.build()
}
}
:私は/作成/は別の俳優(StateChecker
)を管理所有しており、このStateChecker
CheckState
メッセージ4秒ごとに送信するために予定されている俳優(AppMaster
)を作成しようとしています次の例外:
groovy.lang.MissingMethodException: No signature of method: akka.actor.LightArrayRevolverScheduler.schedule() is applicable for argument types: (scala.concurrent.duration.FiniteDuration, scala.concurrent.duration.FiniteDuration, akka.actor.LocalActorRef, com.me.myapp.messages.CheckState, akka.dispatch.Dispatcher) values: [0 days, 4000 milliseconds, Actor[akka://myapp/user/myapp-master/o1-keeper#-1837899613], ...]
Possible solutions: schedule(scala.concurrent.duration.FiniteDuration, scala.concurrent.duration.FiniteDuration, java.lang.Runnable, scala.concurrent.ExecutionContext), schedule(scala.concurrent.duration.FiniteDuration, scala.concurrent.duration.FiniteDuration, scala.Function0, scala.concurrent.ExecutionContext), schedule(scala.concurrent.duration.FiniteDuration, scala.concurrent.duration.FiniteDuration, akka.actor.ActorRef, java.lang.Object, scala.concurrent.ExecutionContext, akka.actor.ActorRef)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58)
at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:49)
私はログステートメントに追加され、例外がスケジューリングの中にスローされます。
context.system().scheduler().schedule(startDur, freqDur, stateChecker, checkState,
executor)
私はこれを修正するために何をする必要がありますか?これはAkkaのJava APIで問題になっているので、私はを実行します。は、Java API経由の回答が必要です...事前に感謝!
あなたはnull'なので 'に' Actor.noSenderを() '好む必要があります – dfogni