akkadotnet / akka.net

Canonical actor model implementation for .NET with local + distributed actors in C# and F#.
http://getakka.net
Other
4.66k stars 1.04k forks source link

Dead-Letter Queue capabilities for Akka Streams #2285

Open mikhailshilkov opened 7 years ago

mikhailshilkov commented 7 years ago

I'm searching for a way to aggregate all failed messages from all stream stages into a place, normally known as Dead-Letter queue. I.e. when I set my Streams supervision strategy to Resume, the failed message should not disappear in nowhere, but should be reportable and loggable.

Ideally, the Dead-Letter would contain a failed item together with exception it raised, for any stage in the graph. Then I will probably persist the item and will replay it once the problem is resolved. Async stages have actors behind them, so should be doable in the end.

So far, I was able to log all exceptions by extracting them from the decider (Func<Exception, Decider>), but that's as far as I am.

alexvaluyskiy commented 7 years ago

You can read this topic https://github.com/akka/akka/issues/19222

mikhailshilkov commented 7 years ago

I don't understand the internals of Akka good enough to find those arguments compelling. If something is not performant and potentially unreliable, it doesn't mean you can't provide the capability to opt-in when needed. At least, developer experience could greatly benefit of DL messages. Thanks for the link.

alexvaluyskiy commented 7 years ago

Probably Akka Streams is not the best solution to create a custom message queue. ZeroMQ was designed for that purposes.