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

时间:2017-02-08 19:40:39

标签: f# akka.net

Akka.Net:

为什么 actorOf 函数 NOT 需要一个以 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的新手。 因此,我不明白为什么“演员&lt; _&gt;”参数(我相信它代表一个邮箱)对于actorOf函数没用。

1 个答案:

答案 0 :(得分:0)

actorOf2函数采用Actor<_>参数,该参数表示一个actor执行上下文(来自F#MailboxProcessor,它通常称为邮箱)。它允许诸如更改actor生命周期,创建子actor或与消息发送者通信之类的事情。

然而,有时您可能想要创建actor,它被设计为用作数据的简单接收器,即处理消息并将结果推送到某些外部服务。这是actorOf可能有用的地方。