我需要通过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 我在这里缺少什么?
答案 0 :(得分:4)
使用Base64编码时,最大邮件大小为48k http://msdn.microsoft.com/en-us/library/windowsazure/hh767287.aspx
使用Azure Service Bus Queues,您最多可以获得256k
答案 1 :(得分:1)
我相信你最终会得到一个双重编码的字符串。存储客户端库历史上基于64位编码放在队列中的所有内容,因此它是base64编码的base64编码字符串。我的猜测是,如果你改为QueueMessage(_nlpInputQueue, compressed)
,那就行了。