Akka.net, как мне остановить актера, не дожидаясь окончания текущего сообщения?
Интересно, смогу ли я остановить актера, не ожидая обработки текущего сообщения, или просто отменить его.
Здесь объясняются способы сделать это
https://petabridge.com/blog/how-to-stop-an-actor-akkadotnet/
Но все они ждут обработки текущего сообщения.
Стоп () актер:
останавливает актера сразу после окончания обработки текущего сообщения.
Убить актера:
это генерирует ActorKilledException, который будет зарегистрирован и обработан. Актер остановится сразу после завершения обработки текущего сообщения.
Отправьте актеру PoisonPill:
субъект завершит обработку сообщений, находящихся в данный момент в своем почтовом ящике, и затем остановится.
1 ответ
Я хотел бы спросить, почему у вас есть длительный процесс внутри получения актеров сообщения. Лучше было бы размещать любой код, который может занять некоторое время и который вы хотите иметь возможность отменить, в Задачу при получении сообщения.
Затем субъект будет освобожден и сможет принять сообщение от одного из методов остановки, которые вы перечислили выше, и соответствующим образом завершить задачу.
Кроме того, пункт 4 на следующей странице показывает пример кода https://petabridge.com/blog/top-7-akkadotnet-stumbling-blocks/