/// <summary>
        /// Deserializes a raw message from the given message.
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        public object Deserialize(Message message)
        {
            if (message == null || message.Body == null || message.Body.Length == 0)
            {
                return null;
            }

            var stream = new MemoryStream(message.Body);
            var body = _binaryFormatter.Deserialize(stream) as List<object>;

            if (body == null || body.Count == 0)
            {
                return null;
            }

            var json = body.First() as string;
            if (string.IsNullOrEmpty(json))
            {
                return null;
            }

            var messageTypeFullName = message.Headers[TransportHeaderKeys.MessageFullTypeName];
            if (string.IsNullOrEmpty(messageTypeFullName))
            {
                return null;
            }

            var messageType = Type.GetType(messageTypeFullName);

            return _jsonSerializer.Deserialize(json, messageType);
        }
        /// <summary>
        /// Deserializes a raw message from the given message.
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        public object Deserialize(Message message)
        {
            if (message == null || message.Body == null || message.Body.Length == 0)
            {
                return null;
            }

            var stream = new MemoryStream(message.Body);
            var body = _binaryFormatter.Deserialize(stream) as List<object>;

            if (body == null || body.Count == 0)
            {
                return null;
            }

            return body.First();
        }
        private Message CreateMessage(object evnt)
        {
            var result = new Message { MessageIntent = MessageIntentEnum.Publish };
            var stream = new MemoryStream();

            _messageSerializer.Serialize(evnt, stream);

            result.Headers = new Dictionary<string, string>();
            result.Headers.Add(TransportHeaderKeys.MessageFullTypeName, evnt.GetType().AssemblyQualifiedName);
            result.Body = stream.ToArray();
            result.Recoverable = true;
            result.TimeToBeReceived = TimeSpan.MaxValue;

            return result;
        }