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/

Другие вопросы по тегам