我想将文件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 []?
请与此主题分享任何有用的链接,或者是否已在某处询问此问题。
感谢。
答案 0 :(得分:1)
您应该通过将邮件正文反序列化为byte[]
:
// Process message from queue
Console.WriteLine("Body: " + messageReceivedEventArgs.BrokeredMessage.GetBody<byte[]>());
请注意,Service Bus消息的最大大小为256 KB。另请参阅Service Bus Quotas。