Example #1
0
        public async Task HandleMessage(object message, IMessageProcessingContext context)
        {
            Calls.Add(DateTime.UtcNow);
            var deferralTestMessage = message as DeferralTestMessage;

            if (deferralTestMessage == null)
            {
                return;
            }
            if (Calls.Count <= deferralTestMessage.NumberOfTimesToDefer)
            {
                await context.Defer(TimeSpan.FromSeconds(3));
            }
            else if (Calls.Count - deferralTestMessage.NumberOfTimesToDefer <= deferralTestMessage.NumberOfTimesToAbandon)
            {
                await context.Abandon();
            }
            else
            {
                if (deferralTestMessage.Complete)
                {
                    await context.Complete();
                }
                else
                {
                    if (!_hasDeadLettered)
                    {
                        await context.DeadLetter("Deadlettering this message");

                        _hasDeadLettered = true;
                    }
                }
            }
        }