Что означает код HRESULT 0xC00E0005 (MQ_ERROR_QUEUE_EXISTS)?

 
Предыдущий Следующий
MQ_ERROR_QUEUE_NOT_ACTIVE MQ_ERROR_INVALID_PARAMETER

MQ_ERROR_QUEUE_EXISTS

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

MQ_ERROR_QUEUE_EXISTS — Очередь с таким путём или идентификатором экземпляра уже существует.

Очередь MSMQ имеет собственное время жизни, режим открытия и состояние в Queue Manager. При диагностике важно отделять существование очереди от действительности уже открытого handle и от возможности конкретной операции receive/send.

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

  • Проверьте существующую очередь по имя пути и instance/имя формата до повторного MQCreateQueue; одинаковое имя не означает, что объект можно безопасно заменить.
  • Если очередь должна создаваться идемпотентно, сначала откройте/прочитайте существующий объект и сравните требуемые свойства вместо безусловного удаления и создания заново.
  • Если есть несколько consumers или callbacks, сопоставьте их действия по времени, чтобы увидеть удаление сообщения, закрытие handle или смену поколения очереди.

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

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

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


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