Exemplo n.º 1
0
        /// <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));
        }
Exemplo n.º 2
0
        internal MessageFormatFlags GetMessageFormatFlags(MessageData messageData)
        {
            MessageFormatFlags messageFormatFlags = MessageFormatFlags.InlineJson;

            if (messageData.TotalMessageSizeBytes > MaxStorageQueuePayloadSizeInBytes)
            {
                messageFormatFlags = MessageFormatFlags.StorageBlob;
            }

            return(messageFormatFlags);
        }
Exemplo n.º 3
0
        /// <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));
        }