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