如何使用 F# 在 akka.net 中创建子演员?
How to create a child actor in akka.net using F#?
我有两个演员 - 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 函数创建父 actor 引用。
let parentRef = spawn systemActor "parentActor" parentActor
现在我要做的是在父actor 下创建子actor 引用。如下所示。
let childRef = spawn parentRef "childActor" childActor
但这不起作用。 spawn 函数需要 IActorRefFactory 类型的参数,因此它不接受 IActorRef。有什么方法可以使用 F# 在 akka.net 中的父 actor 下创建子 actor?
IActorRefFactory
是一个负责确定父级的接口,在 Akka.FSharp 的情况下,它也由 ActorSystem
和 Actor<_>
实现。所以在你的情况下只需使用:
let childRef = spawn mailbox "childActor" childActor
我有两个演员 - 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 函数创建父 actor 引用。
let parentRef = spawn systemActor "parentActor" parentActor
现在我要做的是在父actor 下创建子actor 引用。如下所示。
let childRef = spawn parentRef "childActor" childActor
但这不起作用。 spawn 函数需要 IActorRefFactory 类型的参数,因此它不接受 IActorRef。有什么方法可以使用 F# 在 akka.net 中的父 actor 下创建子 actor?
IActorRefFactory
是一个负责确定父级的接口,在 Akka.FSharp 的情况下,它也由 ActorSystem
和 Actor<_>
实现。所以在你的情况下只需使用:
let childRef = spawn mailbox "childActor" childActor