3

我需要通过 Azure 队列发送压缩的 Base64 数据,该队列有 64K 的限制。
我的代码压缩数据,然后将其编码为 Base64 字符串。
我验证压缩和编码的字符串不超过 64000 字节(参见下面的 encodedLen),但是,当我尝试添加 ~57,000 字节的消息时,我的代码崩溃了。

var byteString = Encoding.UTF8.GetBytes(articleDataToSend);  
var compressed = QuickLZ.compress(byteString, 1);  
var encoded = Convert.ToBase64String(compressed);  

var encodedLen = Encoding.UTF8.GetByteCount(encoded);  
if(encodedLen < 64000)
{
    QueueMessage(_nlpInputQueue, encoded);
}

我正在使用 Visual Studio 2012 和 .Net 4.5。
我在这里想念什么?

4

2 回答 2

4

使用 Base64 编码时的最大消息大小为 48k http://msdn.microsoft.com/en-us/library/windowsazure/hh767287.aspx

使用 Azure 服务总线队列,你可以得到高达 256k

于 2012-11-27T19:55:33.293 回答
1

我相信您最终会得到一个双重编码的字符串。存储客户端库历来对队列中的所有内容都进行了 base64 编码,因此它对您的 base64 编码字符串进行了 base64 编码。我的猜测是,如果您这样做QueueMessage(_nlpInputQueue, compressed),这将起作用。

于 2012-11-27T20:28:22.083 回答