Exemplo n.º 1
0
        public static IHealthBuilder AddAzureServiceBusTopicSubscriptionDeadLetterQueueCheck(
            this IHealthCheckBuilder builder,
            string name,
            string connectionString,
            string topicName,
            string subscriptionName,
            long deadLetterWarningThreshold = 1,
            long?deadLetterErrorThreshold   = null)
        {
            if (deadLetterErrorThreshold.HasValue && (deadLetterWarningThreshold > deadLetterErrorThreshold))
            {
                throw new ArgumentException("Error threshold must exceed warning threshold", nameof(deadLetterErrorThreshold));
            }

            var managementClient = new ManagementClient(connectionString);

            builder.AddCheck(
                name,
                ServiceBusHealthChecks.CheckDeadLetterQueueCount(Logger, EntityNameHelper.FormatSubscriptionPath(topicName, subscriptionName), name, GetQueueMessageCount, deadLetterWarningThreshold, deadLetterErrorThreshold));
            return(builder.Builder);

            async Task <MessageCountDetails> GetQueueMessageCount()
            {
                var info = await managementClient.GetSubscriptionRuntimeInfoAsync(topicName, subscriptionName);

                return(info.MessageCountDetails);
            }
        }
        public static IHealthBuilder AddAzureServiceBusQueueDeadLetterQueueCheck(
            this IHealthCheckBuilder builder,
            string name,
            string connectionString,
            string queueName,
            TimeSpan cacheDuration,
            long deadLetterWarningThreshold = 1,
            long?deadLetterErrorThreshold   = null)
        {
            if (deadLetterErrorThreshold.HasValue && (deadLetterWarningThreshold > deadLetterErrorThreshold))
            {
                throw new ArgumentException("Error threshold must exceed warning threshold", nameof(deadLetterErrorThreshold));
            }

            var managementClient = new ManagementClient(connectionString);

            builder.AddCachedCheck(
                name,
                ServiceBusHealthChecks.CheckDeadLetterQueueCount(Logger, queueName, name, GetQueueMessageCount, deadLetterWarningThreshold, deadLetterErrorThreshold),
                cacheDuration);
            return(builder.Builder);

            async Task <MessageCountDetails> GetQueueMessageCount()
            {
                var info = await managementClient.GetQueueRuntimeInfoAsync(queueName);

                return(info.MessageCountDetails);
            }
        }