Esempio n. 1
0
        public static Func <Message, Task> Wrap(
            Func <Message, Task <bool> > innerHandler,
            ISQS sqs,
            Action <TimeSpan> onTiming,
            Action <Exception> onException)
        {
            return(async message =>
            {
                var timer = Stopwatch.StartNew();

                try
                {
                    bool result;
                    try
                    {
                        result = await innerHandler(message);
                    }
                    catch (Exception ex)
                    {
                        onException(ex);
                        result = false;
                    }

                    if (result)
                    {
                        await sqs.DeleteMessageAsync(message.ReceiptHandle);
                    }
                }
                finally
                {
                    timer.Stop();
                    onTiming(timer.Elapsed);
                }
            });
        }
 public SimpleListener(
     ISQS sqs,
     Func <Message, Task> messageHandler,
     CancellationToken ctx,
     IListenerLogger logger)
 {
     _sqs            = sqs;
     _messageHandler = messageHandler;
     _ctx            = ctx;
     _logger         = logger;
 }