/// <summary> /// Serializes the MessageData object /// </summary> public async Task <string> SerializeMessageDataAsync(MessageData messageData) { string rawContent = JsonConvert.SerializeObject(messageData, this.taskMessageSerializerSettings); messageData.TotalMessageSizeBytes = Encoding.Unicode.GetByteCount(rawContent); MessageFormatFlags messageFormat = this.GetMessageFormatFlags(messageData); if (messageFormat != MessageFormatFlags.InlineJson) { byte[] messageBytes = Encoding.UTF8.GetBytes(rawContent); // Get Compressed bytes string blobName = Guid.NewGuid().ToString(); await this.CompressAndUploadAsBytesAsync(messageBytes, blobName); MessageData wrapperMessageData = new MessageData { CompressedBlobName = blobName }; return(JsonConvert.SerializeObject(wrapperMessageData, this.taskMessageSerializerSettings)); } return(JsonConvert.SerializeObject(messageData, this.taskMessageSerializerSettings)); }
internal MessageFormatFlags GetMessageFormatFlags(MessageData messageData) { MessageFormatFlags messageFormatFlags = MessageFormatFlags.InlineJson; if (messageData.TotalMessageSizeBytes > MaxStorageQueuePayloadSizeInBytes) { messageFormatFlags = MessageFormatFlags.StorageBlob; } return(messageFormatFlags); }
/// <summary> /// Serializes the MessageData object /// </summary> /// <param name="messageData">Instance of <see cref="MessageData"/></param> /// <returns>JSON for the <see cref="MessageData"/> object</returns> public async Task <string> SerializeMessageDataAsync(MessageData messageData) { string rawContent = JsonConvert.SerializeObject(messageData, this.taskMessageSerializerSettings); messageData.TotalMessageSizeBytes = Encoding.Unicode.GetByteCount(rawContent); MessageFormatFlags messageFormat = this.GetMessageFormatFlags(messageData); if (messageFormat != MessageFormatFlags.InlineJson) { // Get Compressed bytes and upload the full message to blob storage. byte[] messageBytes = Encoding.UTF8.GetBytes(rawContent); string blobName = this.GetNewLargeMessageBlobName(messageData); messageData.CompressedBlobName = blobName; await this.CompressAndUploadAsBytesAsync(messageBytes, blobName); // Create a "wrapper" message which has the blob name but not a task message. var wrapperMessageData = new MessageData { CompressedBlobName = blobName }; return(JsonConvert.SerializeObject(wrapperMessageData, this.taskMessageSerializerSettings)); } return(JsonConvert.SerializeObject(messageData, this.taskMessageSerializerSettings)); }