public async Task <HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = new CancellationToken()) { var queueStatus = await _sqsClient.GetQueueStatusAsync(); var healthStatus = queueStatus.IsHealthy ? HealthStatus.Healthy : HealthStatus.Unhealthy; var description = $"Status for '{_sqsClient.GetQueueName()}' queue"; return(new HealthCheckResult(healthStatus, description)); }
private async Task ProcessMessageAsync(Message message) { try { var messageType = message.MessageAttributes.GetMessageTypeAttributeValue(); if (messageType == null) { throw new Exception($"No 'MessageType' attribute present in message {JsonConvert.SerializeObject(message)}"); } var processor = _messageProcessors.SingleOrDefault(x => x.CanProcess(messageType)); if (processor == null) { throw new Exception($"No processor found for message type '{messageType}'"); } await processor.ProcessAsync(message); await _sqsClient.DeleteMessageAsync(message.ReceiptHandle); } catch (Exception ex) { _logger.LogError(ex, $"Cannot process message [id: {message.MessageId}, receiptHandle: {message.ReceiptHandle}, body: {message.Body}] from queue {_sqsClient.GetQueueName()}"); } }
private async void ProcessMessage(Message message) { try { var messageType = message.MessageAttributes.SingleOrDefault(x => x.Key == MessageAttributes.MessageType).Value; if (messageType == null) { throw new Exception($"No '{MessageAttributes.MessageType}' attribute present in message"); } var processor = _messageProcessors.SingleOrDefault(x => x.CanProcess(messageType.StringValue)); if (processor == null) { throw new Exception($"No processor found for message type '{messageType.StringValue}'"); } processor.Process(message); await _sqsClient.DeleteMessageAsync(message.ReceiptHandle); } catch (Exception ex) { _logger.LogError(ex, $"Cannot process message [id: {message.MessageId}, receiptHandle: {message.ReceiptHandle}, body: {message.Body}] from queue {_sqsClient.GetQueueName()}"); } }