在这里阅读: https://petabridge.com/blog/akkadotnet-async-actors-using-pipeto/
一旦先前对OnReceive的调用退出,演员的邮箱就会将新消息推送到演员的OnReceive方法中。
之后
在ReceiveActor上,使用ReceiveAsync,其中T是此接收处理程序期望的消息类型。从那里,您可以使用async并在演员内部等待您内心的渴望。
但是,与此相关的是成本。当您的actor等待任何给定的任务时, actor将无法处理发送给它的任何其他消息,直到它完成对消息的全部处理为止。(强调我的想法)
在我看来,我可以使用这种阻塞质量来强制Actor成为一种串行操作队列。是的,如果进程崩溃并且排队的消息未保留,则将导致这些消息丢失。假设可以,但是就我而言,这是可取的。还有其他原因不喜欢这样的演员吗?
答案 0 :(得分:0)
还有其他原因不喜欢这样的演员吗?
您的总体问题在前提上有缺陷,但是简短的答案是您应该绝对以这种方式使用Actors。
您的问题的缺陷在于,您引用的博客文章涉及使用异步和PipeTo。您似乎所缺少的是 all Actor是以这种方式工作的,无论是同步的还是异步的,以及是否使用PipeTo!
Actor的整个概念(至少在Akka.Net中)是围绕一次处理一个邮箱中的消息(您所说的“串行操作队列”)建立的。