如何处理Azure存储队列中的大消息?

时间:2019-02-18 15:17:17

标签: c# azure-storage azure-storage-queues

我们使用了一些azure函数和azure存储队列在它们之间进行通信。我们知道每个队列消息的限制为64kB,因此我们必须使用消息压缩,但有时会超过该限制。根据文档https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-azure-and-service-bus-queues-compared-contrasted#capacity-and-quotas

  

Azure通过将队列和Blob结合在一起来支持大型消息-此时,您可以为单个项目排队最多200 GB。

看起来我们可以将大消息放入存储队列中。不幸的是,没有关于此的其他文档。所以我们的问题是它应该如何工作?它应该开箱即用,或者我们应该使用某种模式,例如将消息写入blob,将具有blob id的消息放入队列中,然后在某些由队列触发的函数中按id读取blob?

我们使用Microsoft.Azure.Storage.Queue v9.4.2 nuget包将消息推送到队列中。

1 个答案:

答案 0 :(得分:0)

Azure队列需要CloudStorageAccount来支持它。根据文档,CloudStorageAccount可以是Azure Blob存储。

/* Include these "using" directives...
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
*/

string storageConnectionString = "DefaultEndpointsProtocol=https;"
    + "AccountName=[Storage Account Name]"
    + ";AccountKey=[Storage Account Key]"
    + ";EndpointSuffix=core.windows.net";

CloudStorageAccount account = CloudStorageAccount.Parse(storageConnectionString);

// Create the queue client.
CloudQueueClient queueClient = account.CreateCloudQueueClient();

我使用以下参考文献将其拼凑在一起:

https://docs.microsoft.com/en-us/azure/storage/queues/storage-dotnet-how-to-use-queues

https://docs.microsoft.com/en-us/dotnet/api/overview/azure/storage