Site icon EfmSoft

Что означает код HRESULT 0xC00E0088 (MQ_ERROR_MESSAGE_NOT_FOUND)?

 
Предыдущий Следующий
MQ_ERROR_PROPERTIES_CONFLICT MQ_ERROR_CANT_RESOLVE_SITES

MQ_ERROR_MESSAGE_NOT_FOUND

Что означает MQ_ERROR_MESSAGE_NOT_FOUND

MQ_ERROR_MESSAGE_NOT_FOUND (0xC00E0088) — Сообщение не существует либо уже удалено из очереди.

Получение сообщения в MSMQ изменяет состояние самой очереди: destructive receive удаляет сообщение, а транзакционный receive связывает его судьбу с commit/abort. Поэтому конкурирующие потребители, курсоры и повторные вызовы могут наблюдать уже другое состояние, даже если используют тот же lookup id или позицию.

Что проверить

  • Проверьте, не был ли message lookup id уже потреблён другим consumer или транзакцией.
  • Сопоставьте lookup id с конкретной очередью и её временем жизни; идентификатор нельзя переносить на пересозданную очередь как глобальный.
  • Перед retry заново запросите текущее состояние очереди вместо повторного использования устаревшей позиции.

Как подтвердить исправление

Повторяйте исходный сценарий с новым корректно открытым объектом и отдельно проверяйте конкурентный путь. Простое исчезновение ошибки после перезапуска службы не доказывает устранение гонки или ошибки времени жизни.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.

Exit mobile version