Azure ServiceBus队列保存和读取文件字节[]

本文关键字:文件 字节 读取 ServiceBus 队列 保存 Azure | 更新日期: 2023-09-27 18:00:46

我正在字符串中将File byte[]存储到Azure ServiceBusQueue并从Queue中读取。

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

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();

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

问题:如何从从队列接收的BrokeredMessage对象中读取字节[]?

请分享与此主题有关的任何有用链接,或者如果在某个地方已经问过此问题。

谢谢。

Azure ServiceBus队列保存和读取文件字节[]

您应该通过将消息体反序列化为byte[]:来实现这一点

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

请注意,服务总线消息的最大大小为256 KB。另请参阅服务总线配额。