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