想知道我是否可以在不必等待处理当前消息的情况下阻止演员,或者只是取消它。
这里解释了这样做的方法
https://petabridge.com/blog/how-to-stop-an-actor-akkadotnet/
但是他们都在等待处理当前的消息。
停止()演员:
完成后立即停止演员 处理当前消息。
杀死演员:
这将抛出一个将被记录和处理的ActorKilledException。演员会 完成处理当前消息后立即停止。
向演员发送PoisonPill:
演员将完成处理 当前在其邮箱中的邮件,然后停止。
答案 0 :(得分:3)
我会质疑为什么你在actor消息接收中有一个长时间运行的进程。最好的做法是放置任何可能需要一些时间的代码,并希望能够在接收消息时取消任务。
然后,演员将被释放并能够接受上面列出的其中一种停止方法的消息,并相应地终止任务。此外,下一页的第4点显示了一些示例代码https://petabridge.com/blog/top-7-akkadotnet-stumbling-blocks/