0

我尝试使用以下代码来查看/捕获死信,但它没有以应有的方式工作。我错过了什么。到底是什么?我的目的只是查看所有正在交付给死信演员的死信。

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") 
4

1 回答 1

3

当您订阅事件总线时,您订阅的是发布到总线的消息类型。在您发布的代码中,您注册了 DeadLetterActorRef 消息的订阅者,而死信以 DeadLetter 消息的形式发布。因此,在您的情况下,您只需将订阅更改为

let boolval = system.EventStream.Subscribe(echoServer, typeof<DeadLetter>)
于 2016-05-26T09:33:04.793 回答