Example #1
0
        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()}");
            }
        }
Example #2
0
        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()}");
            }
        }