Azure ServiceBus队列保存并读取文件byte []

时间:2015-07-02 13:30:25

标签: c# azure azureservicebus

我想将文件byte []存储到Azure ServiceBusQueue并从队列中读回来。

这是我将文件存储到队列的代码。

var uploadedFile = new Byte[FileUpload1.PostedFile.InputStream.Length]; 

            FileUpload1.PostedFile.InputStream.Read(uploadedFile, 0, FileUpload1.PostedFile.ContentLength);

            var message = Utility.CreateBrokeredMessage(uploadedFile);


            var senderQueue = new QueueSender("tasksnotifications");

            if (senderQueue.SendMessage(message))
            {
                ResultText = "Your message has been submitted successfully";
                MessageTextBox.Text = string.Empty;
            }
            else
            {
                ResultText = "Your message is not submitted.";
            }

以下是从队列中读取消息的代码。

// Process message from queue
             Console.WriteLine("Body: " + messageReceivedEventArgs.BrokeredMessage.GetBody<object>());

             Console.WriteLine("MessageID: " + messageReceivedEventArgs.BrokeredMessage.MessageId);

             // Remove message from queue
             messageReceivedEventArgs.BrokeredMessage.Complete();

我不确定是否可以将文件的byte []存储到Azure ServiceBus Queue,但数据是否已成功发送。

问题: 如何读取我从Queue收到的BrokeredMessage对象的byte []?

请与此主题分享任何有用的链接,或者是否已在某处询问此问题。

感谢。

1 个答案:

答案 0 :(得分:1)

您应该通过将邮件正文反序列化为byte[]

来实现此目的
// Process message from queue
Console.WriteLine("Body: " + messageReceivedEventArgs.BrokeredMessage.GetBody<byte[]>());

请注意,Service Bus消息的最大大小为256 KB。另请参阅Service Bus Quotas