| Предыдущий | Следующий |
| COMQC_E_NO_QUEUEABLE_INTERFACES | COMQC_E_NO_IPERSISTSTREAM |
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE: граница сбоя, проверка и исправление
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE имеет значение 0x80110602 (-2146367998 в знаковом 32-битном представлении). Для операции требуется MSMQ, но эта служба не установлена.
Для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE старший бит HRESULT делает значение ошибкой. Константа COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE объявлена в winerror.h и относится к области «очереди компонентов COM+».
Почему важен контекст вызова
Для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE код относится к COM+ Queued Components. Для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE здесь важны доступность MSMQ, пригодность интерфейса для очереди, сериализуемость вызова и доверие к отправителю; успешная запись сообщения в очередь ещё не доказывает успешное выполнение серверного компонента.
Для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE одинаковый HRESULT может быть виден в нескольких слоях. Для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE в журнале нужно отделить исходный возврат от последующих ошибок очистки, повторов и обёрток.
В имени COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE закодированы ориентиры для расследования: COMQC — технический признак «comqc»; QUEUING — технический признак «queuing»; SERVICE — служба; NOT — отсутствие требуемого условия; AVAILABLE — доступность ресурса. Для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE эти ориентиры задают конкретный предмет проверки, но не заменяют контракт вызвавшего API.
Интерпретация HRESULT: признаки в имени константы
Компонент имени COMQC уточняет смысл COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE: речь идёт про технический признак «comqc». Для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE эту границу следует воспроизвести отдельно от последующей обработки ошибки.
Маркер QUEUING в COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE направляет проверку на технический признак «queuing». Для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE сопоставьте этот признак с фактическими параметрами первого неуспешного вызова.
Компонент имени SERVICE уточняет смысл COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE: речь идёт про служба. Для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE эту границу следует воспроизвести отдельно от последующей обработки ошибки.
При разборе COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE обозначение NOT связывает код с темой «отсутствие требуемого условия». До повторной проверки COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE сохраните входные данные без нормализации.
Для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE в техническом контексте особенно важны: транзакция, провайдер. При расследовании COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE их следует проверять как связанные части одной операции, а не как независимые симптомы.
Минимальный набор свидетельств
- В первичном журнале по
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLEнужно сохранить имя очереди, Message ID и Correlation ID. - На границе сбоя по
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLEнужно записать интерфейс, IID и вызываемый метод queued-компонента. - Для сравнения с исправным случаем по
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLEнужно проверить состояние MSMQ, права очереди и учётную запись слушателя. - До повторной попытки по
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLEнужно сохранить тело и свойства проблемного сообщения до его перемещения. - Для воспроизводимого отчёта по
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLEнужно зафиксировать AppID COM+ приложения и параметры Queuing Enabled/Listen.
Как локализовать причину
- Для
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE: Проверить, что интерфейс отмечен как queueable и параметры метода допускают маршалинг; отдельно отметьте изменение состояния объекта. - Для
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE: Проверить создание и доступность очереди приложения COM+; все остальные условия оставьте неизменными. - Для
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE: Сопоставить отправителя сообщения с политикой аутентификации и доверия; не удаляйте исходные данные до завершения сравнения. - Для
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE: Повторить вызов с минимальным набором параметров и проследить Message ID до получателя; повторите шаг на исправном контрольном примере. - Для
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE: Подтвердить не только удаление сообщения из очереди, но и завершение серверной транзакции; сохраните первый hresult и точное время результата.
Как доказать исправление
Корректирующее действие для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE должно устранять условие «Для операции требуется MSMQ, но эта служба не установлена» на уровне транзакция. Для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE простое подавление HRESULT, бесконечный повтор или очистка всех настроек не доказывают восстановление контракта.
Для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE зафиксируйте результат до и после изменения одними и теми же средствами. Для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE сравнивайте не только HRESULT, но и конечное состояние объекта, побочные эффекты и события подсистемы.
Проверка зависимости от MSMQ
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE возвращается до нормальной обработки queued-вызова, когда COM+ не может использовать Microsoft Message Queuing. Причиной может быть отсутствие компонента MSMQ, остановленная служба или недоступная локальная очередь приложения.
Для COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE сначала подтвердите установку и запуск MSMQ, затем проверьте создание очередей COM+ и права учётной записи слушателя. Повторная регистрация queued-интерфейса не заменяет восстановление самой службы очередей.
- Для
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLEсохраните состояние службы MSMQ и события её запуска. - Для
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLEпроверьте доступность private queue приложения. - Для
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLEотправьте контрольное сообщение напрямую через MSMQ.
Полезные материалы
- Microsoft: COM коды ошибок — COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE
- Microsoft: Microsoft: using the queue moniker — COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE
- Microsoft: Microsoft: COM+ queued components tasks — COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE
- Microsoft: Microsoft: Message Queuing — COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE
- Очереди компонентов COM+ — COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE
Нужно найти другой код? Найти другой код состояния или ошибки.
