I am aiming for exactly-once-delivery in Orleans. I have taken care of at-most-once by using sequence numbers and was relying on Orleans retry mechanism for at-least-once. So, I have configured something like this - increased timeout limit to 2 min and set resendCount to 60. .Configure<SiloMessagingOptions>(options => { options.ResendOnTimeout = true; options.MaxResendCount = 60; options.ResponseTimeout = new TimeSpan(0,2,0); });
- Is this enough?
- Is there any way to know my SiloMessagingOptions like resendCount, after the Silo has been started?
- How does Orleans determine that a message has failed? If I don't await the Task and the message fails, does Orleans still detect it and resend the message? Is there any way for the application to know that a message has failed?
- What benefit do I get, in context of message reliability, by awaiting a Task (assuming I don't care about the return value of the Task)?
UPDATE: I have been told that using the at-least-once delivery of Orleans is not the best way to go and that I should use features like reminders instead. The question above is here just to get some doubts cleared.