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); } }