Site icon EfmSoft

Что означает код HRESULT 0xC00E005A (MQ_ERROR_QUEUE_DELETED)?

 
Предыдущий Следующий
MQ_ERROR_TRANSACTION_ENLIST MQ_ERROR_ILLEGAL_CONTEXT

MQ_ERROR_QUEUE_DELETED

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

MQ_ERROR_QUEUE_DELETED (0xC00E005A) — Очередь удалена. Получать сообщения через этот дескриптор больше нельзя; дескриптор следует закрыть.

Дескриптор MSMQ относится к конкретному времени жизни очереди и локальной службы Queue Manager. Удаление/пересоздание очереди или перезапуск MSMQ не «оживляют» старый handle, даже если имя пути после этого выглядит тем же.

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

  • Проверьте, когда был открыт handle и когда очередь была удалена или пересоздана. Старый handle следует закрыть независимо от совпадения нового имя пути.
  • Если приложение автоматически создаёт очередь заново, сравните instance/имя формата нового объекта и решите, допустимо ли продолжать работу уже с новой очередью.
  • Для асинхронного receive согласуйте закрытие handle с владельцем callback или транзакции, чтобы cleanup сам не создавал гонку.

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

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

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


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

Exit mobile version