Actor model frameworks use at-most-once delivery as a default rule for their message transport, and they do it for good reasons. Efficient reliable messaging requires business-level acknowledgement, and this it not something that the actor model framework is built for.
So how do we build a reliable actor based system? I will share the lessons from our journey through the world of actors where we revised an approach to a message delivery guarantee mutiple times. Our system is written in F# and uses Akka.NET, but this talk is language and platform agnostic, discussing common patterns and possible obstacles when choosing between various methods to achieve reliable messaging in a system run by actors.