private void HandleSqsMessage(Message message) { // Deserialize to envelope MessageEnvelope envelope = (MessageEnvelope)config.MessageSerializer.Deserialize(typeof(MessageEnvelope), messageAdapter.GetMessageBody(message)); Type bodyType = Type.GetType(envelope.BodyType); object body = config.MessageSerializer.Deserialize(bodyType, envelope.Body); // Get handler var handler = config.HandlerResolver.ResolveHandlerForMessage(bodyType); // Invoke try { handler(body); // Handle complete, remove from queue sqs.DeleteMessage(queueUrl, message.ReceiptHandle); } catch (Exception ex) { // TODO: NLog Console.WriteLine($"Error {ex.Message} handling message {message.MessageId}"); } }