protected override async Task Handle(SQSEvent sqsEvent, ILambdaContext context)
        {
            Logger.Info($"Processing Sqs event With {sqsEvent.Records?.Count} records.");

            if (sqsEvent?.Records == null)
            {
                return;
            }
            if (sqsEvent.Records.Count == 0)
            {
                return;
            }

            foreach (var record in sqsEvent.Records)
            {
                Logger.Info($"Processing SQS Event message ID {record.MessageId}.");

                var message = new QueueMessage <TBody>()
                {
                    MessageId     = record.MessageId,
                    ReceiptHandle = record.ReceiptHandle,
                    Attributes    = record.Attributes,
                    Body          = Serializer.DeserializeObject <TBody>(record.Body)
                };

                message.ParseQueueAttributes(record.Attributes);

                await ProcessMessage(message);

                Logger.Info($"SQS Event message ID {record.MessageId} Processed.");
            }
        }