如何在www.example.com中使用F#创建一个子演员akka.net?

xesrikrc  于 2022-11-05  发布在  .NET
关注(0)|答案(1)|浏览(220)

我有两个演员- childActor和parentActor

open System
open Akka
open Akka.FSharp

let systemActor = System.create "systemActor" <| Configuration.defaultConfig()

let childActor (mailbox: Actor<_>) = 
    let rec loop() = actor {
        let! message = mailbox.Receive()
        printfn "Message received"
        return! loop()
    }
    loop()

let parentActor (mailbox: Actor<_>) = 
    let rec loop() = actor {
        let! message = mailbox.Receive()
        printfn "Message received"
        return! loop()
    }
    loop()

我可以使用spawn函数创建父参与者引用。

let parentRef = spawn systemActor "parentActor" parentActor

现在我想做的是在父参与者下创建子参与者引用。

let childRef = spawn parentRef "childActor" childActor

但这不起作用。spawn函数需要一个IActorRefFactory类型的参数,因此它不接受IActorRef。是否有任何方法可以使用F#在www.example.com中的父执行元下创建子执行元akka.net?

pu3pd22g

pu3pd22g1#

IActorRefFactory是一个负责确定父对象的接口,在Akka.FSharp的情况下,它也由ActorSystemActor<_>实现。因此,在您的情况下,只需用途:

let childRef = spawn mailbox "childActor" childActor

相关问题