Esempio n. 1
0
        public Task <IList <Message> > TryReceiveMessages(int maximumMessagesToReturn, bool waitIfQueueEmpty)
        => FailoverExceptions.Try(
            async() =>
        {
            var operationTimeout = (detectFailureFast || !waitIfQueueEmpty) ? settings.ReadTimeout : settings.LongWaitReadTimeout;

            var results = await messageReceiver
                          .ReceiveAsync(maximumMessagesToReturn, operationTimeout)
                          .ConfigureAwait(false);

            if (results == null)
            {
                results = emptyList;
            }

            detectFailureFast = false;

            return(results);
        },
            exception =>
        {
            logger.LogWarning(
                exception,
                $"Exception waiting for messages using connection {connectionStringNumber}: {exception.Message}");
            circuitBreakerLastTripped = DateTime.UtcNow;
            detectFailureFast         = true;

            return(emptyList);
        });
Esempio n. 2
0
 public Task <Exception> TrySend(IList <Message> messages)
 => FailoverExceptions.Try(
     async() =>
 {
     await topicClient.SendAsync(messages).ConfigureAwait(false);
     return(null);
 },
     exception =>
 {
     logger.LogWarning(
         exception,
         $"Exception sending messages using connection {connectionStringNumber}: {exception.Message}");
     circuitBreakerLastTripped = DateTime.UtcNow;
     return(exception);
 });