| Предыдущий | Следующий |
| 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 заново запросите текущее состояние очереди вместо повторного использования устаревшей позиции.
Как подтвердить исправление
Повторяйте исходный сценарий с новым корректно открытым объектом и отдельно проверяйте конкурентный путь. Простое исчезновение ошибки после перезапуска службы не доказывает устранение гонки или ошибки времени жизни.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
