/// <inheritdoc cref="IConsumersHealthCheckService.GetDisconnectedConsumersAsync" /> public Task <IReadOnlyCollection <IConsumer> > GetDisconnectedConsumersAsync(ConsumerStatus minStatus) { // The check is skipped when the application is shutting down, because all consumers will be // disconnected and since the shutdown could take a while we don't want to report the application // as unhealthy. if (_applicationIsStopping) { return(Task.FromResult((IReadOnlyCollection <IConsumer>)Array.Empty <IConsumer>())); } IReadOnlyCollection <IConsumer> disconnectedConsumers = _brokerCollection.SelectMany( broker => broker.Consumers.Where(consumer => consumer.StatusInfo.Status < minStatus)) .ToList(); return(Task.FromResult(disconnectedConsumers)); }
/// <inheritdoc cref="IConsumersHealthCheckService.GetDisconnectedConsumersAsync" /> public Task <IReadOnlyCollection <IConsumer> > GetDisconnectedConsumersAsync( ConsumerStatus minStatus, TimeSpan gracePeriod, Func <IConsumerEndpoint, bool>?endpointsFilter) { // The check is skipped when the application is shutting down, because all consumers will be // disconnected and since the shutdown could take a while we don't want to report the application // as unhealthy. if (_applicationIsStopping) { return(Task.FromResult((IReadOnlyCollection <IConsumer>)Array.Empty <IConsumer>())); } IReadOnlyCollection <IConsumer> disconnectedConsumers = _brokerCollection .SelectMany( broker => GetDisconnectedConsumers(broker, minStatus, gracePeriod, endpointsFilter)) .ToList(); return(Task.FromResult(disconnectedConsumers)); }