запланировать сообщение, используя scheduleOnce
:Будет ли отправлено сообщение с расписанием, если указанный актер остановлен?
val cancellableMessage = system.schedule.scheduleOnce(500 milliseconds, self, "hi")
Затем я запускаю метод, который, в конце его, делает это:
cancellableMessage.cancel()
context.stop(self)
Я видел вопросы планирования сообщений, которые периодически повторяются, например Akka Scala actor scheduled message does not appear to fire, в котором записана мертвая буква, потому что актер был остановлен. Но это были повторяющиеся сообщения. Смогу ли я по-прежнему видеть мертвую букву, если бы я использовал scheduleOnce
вместо этого в порядке выше? Является ли Akka распознать это, так как я хотел сообщить сообщение self
, а позже я остановился self
, он не доставляет сообщение?
Я боюсь, что произойдет 500 миллисекунд, прежде чем я смогу правильно отменить его отправку (так как есть конкретный момент, когда я знаю, что, несмотря ни на что, я могу отменить его), но после ввода метод, который отменяет его, что приводит к мертвым буквам. Не катастрофа, но, конечно, неприятная.
Спасибо. Это подтверждает то, что я видел, но я не был уверен, какие из моих тестов вызывали мертвую букву. – 2rs2ts