| Предыдущий | Следующий |
| MQ_ERROR_ILLEGAL_PROPERTY_VT | MQ_ERROR_IO_TIMEOUT |
MQ_ERROR_BUFFER_OVERFLOW
Что означает MQ_ERROR_BUFFER_OVERFLOW
MQ_ERROR_BUFFER_OVERFLOW — Буфер свойства Message Queuing слишком мал для всех данных, возвращаемых операцией. Для тела сообщения требуемый размер можно определить по PROPID_M_BODY_SIZE.
MSMQ возвращает свойства сообщения в буферы, подготовленные вызывающим кодом. Для свойств переменной длины, особенно тела сообщения, размер нельзя надёжно угадывать заранее: при недостаточном буфере служба сообщает требуемую длину, а данные нужно прочитать повторно в достаточное хранилище.
Что проверить
- Запишите размер выделенного буфера и возвращённый размер свойства. Для тела сообщения используйте значение PROPID_M_BODY_SIZE.
- Повторите получение после увеличения буфера, не изменяя cursor, action и остальные условия чтения, иначе вы будете сравнивать уже другую операцию.
- При конкурирующих получателях учитывайте, что сообщение может исчезнуть между попытками; обработайте это отдельно от ошибки размера.
Как подтвердить исправление
Проверка должна включать сообщение, которое заведомо не помещается в первоначальный буфер: после корректного перераспределения оно читается полностью без обрезки и без изменения его содержимого.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
