2016-02-17 1 views
0

Если у меня есть актер A с младенцем C и отправить PoisonPill в C - будет A направить PoisonPill к C или это будет context.stop(C)?ли Akka PoisonPill распространяется на детей

У меня есть настройка, где вполне возможно, что A создает работу, обрабатываемую C. Поэтому я хочу, чтобы A прекратил работу, когда он обрабатывает все сообщения, которые были получены до PoisonPill (между тем сообщения отправляются C) и имеют C обрабатывать все эти сообщения до тех пор, пока они не завершатся.

ответ

3

Я не думаю, что Акка отправляет PoisonPill. Когда актер получает PoisonPill, он вызывает self.stop(). Вы можете видеть, что здесь в Akka исходном коде:

https://github.com/akka/akka/blob/f008a932c381013f6060ee00a731862bafed2be7/akka-actor/src/main/scala/akka/actor/ActorCell.scala#L514

stop При вызове в качестве актера, который вызывает stop во всех своих детей рекурсивно. stop позволит обрабатывать текущее сообщение, но оно будет отбрасывать оставшиеся сообщения в почтовом ящике.

 Смежные вопросы

  • Нет связанных вопросов^_^