Согласно MSDN, полезная нагрузка сообщения может достигать 8 КБ (8192 байта). ):
Метод AddMessage добавляет сообщение в конец очереди. Сообщение может иметь размер до 8 КБ. Его содержимое должно быть в формате, допускающем кодировку UTF-8.
Однако при добавлении сообщений в очередь я получаю исключения для сообщений, полезная нагрузка которых должна быть намного меньше 8192 байт, волшебная область, кажется, составляет около 6500 байт. Данные, которые я отправляю, представляют собой чистые строки, размер которых проверяется как от члена .Length
, так и от длины, отправленной источником, из которого они извлекаются (существует постоянная разница в 2 байта для разделителя CRLF).
поэтому мой вопрос двоякий:
1) Есть ли какие-либо скрытые данные, добавленные к полезной нагрузке сообщения, которые увеличивают его размер или вызывают такое странное поведение? (например, ограничение применяется к объекту в целом, а не только к его полезной нагрузке, но даже в этом случае, как он может учитывать 1,5 КБ на сообщение?)
2) Как я могу надежно проверить, действительно ли полезная нагрузка ниже 8192?
и некоторая дополнительная информация: я использую Azure SDK 1.4 с VS 2010 Ultimate, запускаю эмуляторы вычислений и хранения (я еще не развернул это приложение) с помощью SQLExpress (я думаю, 2008 года).
Также с помощью кода подтверждено, что максимальный размер составляет 8192 байта (в случае какого-либо дополнительного системного ограничения):
Trace.WriteLine("Max Queue Message Size: " + CloudQueueMessage.MaxMessageSize, "CloudQueueMessage");
CloudQueueMessage: Максимальный размер сообщения в очереди: 8192