Согласно 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