Ejemplo n.º 1
0
        private async Task Consume(IQueueConsumer <TModel> consumer, HorseMessage message, TModel model, HorseClient client)
        {
            if (Retry == null)
            {
                await consumer.Consume(message, model, client);

                return;
            }

            int count = Retry.Count == 0 ? 100 : Retry.Count;

            for (int i = 0; i < count; i++)
            {
                try
                {
                    await consumer.Consume(message, model, client);

                    return;
                }
                catch (Exception e)
                {
                    Type type = e.GetType();
                    if (Retry.IgnoreExceptions != null && Retry.IgnoreExceptions.Length > 0)
                    {
                        if (Retry.IgnoreExceptions.Any(x => x.IsAssignableFrom(type)))
                        {
                            throw;
                        }
                    }

                    if (Retry.DelayBetweenRetries > 0)
                    {
                        await Task.Delay(Retry.DelayBetweenRetries);
                    }

                    if (i == count - 1)
                    {
                        throw;
                    }
                }
            }
        }
Ejemplo n.º 2
0
 public void StartListening()
 {
     consumer.Consume(messageRecieved);
 }