private CloudQueueMessage FromMessage(MessageEnvelope message) { var oldMessage = new BackwardCompatibilityMessageEnvelope { Message = message.GetMessageAsString(), MessageId = message.MessageId, CorrelationId = message.CorrelationId, MessageType = message.MessageType, SentTime = message.SentTime }; var content = _backwardCompatibility ? JsonConverter.ToJson(oldMessage) : JsonConverter.ToJson(message); var envelope = new CloudQueueMessage(content); return(envelope); }
private MessageEnvelope ToMessage(CloudQueueMessage envelope) { if (envelope == null) { return(null); } MessageEnvelope message = null; BackwardCompatibilityMessageEnvelope oldMessage = null; try { message = JsonConverter.FromJson <MessageEnvelope>(envelope.AsString); oldMessage = JsonConverter.FromJson <BackwardCompatibilityMessageEnvelope>(envelope.AsString); } catch { // Handle broken messages gracefully _logger.Warn(null, "Cannot deserialize message: " + envelope.AsString); } // If message is broken or null if (message == null) { message = new MessageEnvelope { Message = envelope.AsBytes }; } message.SentTime = envelope.InsertionTime?.UtcDateTime ?? DateTime.UtcNow; message.MessageId = envelope.Id; message.Reference = envelope; if (oldMessage != null) { if (message.Message == null) { message.SetMessageAsString(oldMessage.Message); } message.CorrelationId = message.CorrelationId ?? oldMessage.CorrelationId; message.MessageType = message.MessageType ?? oldMessage.MessageType; } return(message); }