Я использую планировщик akka, как показано в коде ниже.
Каждый пользователь может войти в мое приложение и создать планировщик для фоновой задачи. Для этого я использую планировщик Akka.
Для каждого идентификатора пользователя я вызываю метод buildScheduler, как показано ниже.Перед вызовом этого метода я отменяю существующий планировщик, используя объект Cancellable для того же идентификатора пользователя.(Я реализовал статическую карту с идентификатором пользователя в качестве ключа и отменимым объектом в качестве значения)
Даже после того, как я отменяю существующий планировщик, actorSystem.actorOf () выдает имя актера error не уникальную ошибку.
Я быХотите понять, что именно происходит, когда мы отменяем планировщик с помощью экземпляра Cancellable?Это также убивает ActorRef, если нет, мы должны повторно использовать один и тот же ActorRef каждый раз, когда мы вызываем этот метод buildScheduler?
Как насчет сообщения, оно будет в памяти навсегда, даже после того, как мы вызовем метод Cancel в inslacelast instace и memory?будет очищаться только при вызове сборщика мусора?
public Cancellable buildScheduler(String actorName, SchedulerActorMessage message, long interval, TimeUnit timeUnit, long initialDelay, String actorMapKey) {
ActorRef daemonRef = actorSystem.actorOf(Props.create(SchedulerActor.class), actorName);
Cancellable cancellableActor = actorSystem.scheduler().schedule(FiniteDuration.apply(initialDelay, timeUnit),
FiniteDuration.apply(interval, timeUnit), daemonRef, message,
actorSystem.dispatcher(), ActorRef.noSender());
actorMap.put(actorMapKey, cancellableActor);
return cancellableActor;
}
Я новичок в актере и обладаю очень базовыми знаниями, пожалуйста, простите меня, если этот вопрос имеет большой смысл.