2017-08-15 98 views
0

将消息从我的C++应用程序推送到Azure存储时,出现以下错误与我的存储队列(不是BLOB-我知道其他人已经看到了这个blob) :Azure Queue正文太大并且超出了最大允许限制

请求主体太大,超过了最大允许限制。

我知道我可能需要切断json,但还有其他建议吗? (如在增加消息大小某处?)

回答

1

在Azure存储队列中的消息最大尺寸64KB48 KB使用Base64编码时)基于最新Azure存储服务限制文档作为下面。

它是不可配置的,目前Azure支持也不会根据请求增加大小。

https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits#storage-limits

我会建议你减少你的JSON消息的大小如JSON缩小

+2

添加一件事:由于Azure使用UTF-16编码来存储数据(即使用2个字节来存储每个字符,可以这么说),所以消息大小基本上限于32KB。 –

+0

嗨@GauravMantri,有没有提到Azure存储队列消息正在使用UTF-16编码的任何文档?谢谢 – juvchan

+0

我记得在某处读过它,但我无法找到它。不过,我自己尝试过,对于任何大小超过32KB的字符串/字节数组,我都有这个错误。 –

0

正如其他人所说的,Azure存储队列消息大小限制(64K)是一个硬限制。

除了编码,压缩(缩小)等:解决此限制的最常见模式是而不是将您的有效负载存储在队列消息中;而是将其存储在Blob存储中,并且只存储消息类型&元数据(如果需要)以及指向包含要处理的有效内容的blob的URI。

通过遵循此模式,并为您的有效负载使用BLOB存储,您实际上可能具有4 TB以上的有效负载大小。而且如果需要,您也可以保留有效负载(而队列消息在处理后会被删除)。

相关问题