我已经尝试使用以下代码来查看/捕获死信,但它没有以应有的方式工作。我错过了什么。完全?我的目的只是查看正在传递给行动者演员的所有死信。
let system = ActorSystem.Create("FSharp")
let echoServer =
spawn system "EchoServer"
<| fun mailbox ->
let rec loop() =
actor {
let! message = mailbox.Receive()
match box message with
| :? string ->
printfn "Echo '%s'" message
return! loop()
| _ -> failwith "unknown message"
}
loop()
let boolval = system.EventStream.Subscribe(echoServer,typedefof<DeadLetterActorRef>)
echoServer.Tell("First Message")
echoServer.Tell("Second Message")
system.DeadLetters.Tell("Dead Message")
答案 0 :(得分:3)
当您订阅活动总线时,您正在订阅发布到总线的消息类型。在您发布的代码中,您将订阅者注册到DeadLetterActorRef消息,而死信以DeadLetter消息的形式发布。因此,在您的情况下,您只需将订阅更改为
let boolval = system.EventStream.Subscribe(echoServer, typeof<DeadLetter>)