Akka.Net:
为什么 actorOf 函数不需要将 Actor<_> 作为参数的函数输入?
看起来 actorOf2 函数确实需要一个 Actor<_> 参数。
如何调用这些函数的上下文如下:
let consoleWriterActor = spawn myActorSystem "consoleWriterActor" (actorOf Actors.consoleWriterActor)
let consoleReaderActor = spawn myActorSystem "consoleReaderActor" (actorOf2 (Actors.consoleReaderActor consoleWriterActor))
let consoleReaderActor (consoleWriter: IActorRef) (mailbox: Actor<_>) message =
...
let consoleWriterActor message =
...
actorOf 的签名如下:
('Message -> unit) -> Actor<Message> -> Cont<'Message,'Returned>
actorOf2 的签名如下:
(Actor<Message> -> 'Message -> unit) -> Actor<Message> -> Cont<'Message,'Returned>
结论:
我是 Akka.net 新手。因此,我不明白为什么"Actor<_>"参数(我认为它代表一个邮箱(对actorOf 函数没有用。
actorOf2
函数采用Actor<_>
参数,该参数表示参与者执行上下文(从 F# MailboxProcessor
通常称为邮箱(。它允许更改参与者生命周期、创建子参与者或与消息发送者通信等操作。
但是,有时您可能希望创建actor,该actor旨在用作数据的简单接收器,即处理消息并将结果推送到某个外部服务中。这就是actorOf
可能有用的地方。