为什么 actorOf 函数 **NOT** 需要具有 *Actor<_>* 作为参数的函数输入?

  • 本文关键字:函数 参数 Actor actorOf NOT f# akka.net
  • 更新时间 :
  • 英文 :


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可能有用的地方。

最新更新