que tiene un procesador de buzón de correo que recibe un número fijo de mensajes:fin de Garantía de mensajes enviados al procesador de buzones
let consumeThreeMessages = MailboxProcessor.Start(fun inbox ->
async {
let! msg1 = inbox.Receive()
printfn "msg1: %s" msg1
let! msg2 = inbox.Receive()
printfn "msg2: %s" msg2
let! msg3 = inbox.Receive()
printfn "msg3: %s" msg3
}
)
consumeThreeMessages.Post("First message")
consumeThreeMessages.Post("Second message")
consumeThreeMessages.Post("Third message")
Estos mensajes deben ser manejados exactamente en el orden enviada. Durante mis pruebas, imprime exactamente lo que debe:
First message
Second message
Third message
Sin embargo, desde la publicación de mensajes es asincrónico, suena como la publicación de 3 mensajes rápidamente podría dar lugar a artículos que son procesados en cualquier orden. Por ejemplo, yo no desea recibir los mensajes fuera de servicio y obtener algo como esto:
Second message // <-- oh noes!
First message
Third message
son mensajes garantizados a recepción y el tratamiento en el orden enviado? ¿O es posible que los mensajes sean recibidos o procesados fuera de servicio?
Esta es una muy buena pregunta. He estado examinando FSharp.Core.dll pero el código es difícil de entender como C#. – ChaosPandion