Что означает код HRESULT 0xC00E0009 (MQ_ERROR_SHARING_VIOLATION)?

 
Предыдущий Следующий
MQ_ERROR_OPERATION_CANCELLED MQ_ERROR_SERVICE_NOT_AVAILABLE

MQ_ERROR_SHARING_VIOLATION

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

MQ_ERROR_SHARING_VIOLATION (0xC00E0009) — Нарушение совместного доступа: очередь уже открыта для монопольного извлечения сообщений.

Очередь MSMQ можно открыть для получения сообщений с режимом совместного доступа. При exclusive receive только один открытый дескриптор имеет право извлекать сообщения; конфликт возникает на уровне режима открытия очереди, а не файловой блокировки её данных на диске.

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

  • Найдите все места, где эта очередь открывается для receive, и сравните параметры режим общего доступа.
  • Если один consumer использует exclusive receive, второй должен либо отказаться от receive, либо дождаться закрытия первого handle.
  • После изменения режима проверьте конкурирующий запуск двух consumers: ошибка должна либо воспроизводиться предсказуемо, либо исчезнуть согласно выбранной модели доступа.

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

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

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


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