Site icon EfmSoft

Что означает код HRESULT 0xC00E009C (MQ_ERROR_MESSAGE_LOCKED_UNDER_TRANSACTION)?

 
Предыдущий Следующий
MQ_ERROR_MESSAGE_NOT_AUTHENTICATED ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS

MQ_ERROR_MESSAGE_LOCKED_UNDER_TRANSACTION

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

MQ_ERROR_MESSAGE_LOCKED_UNDER_TRANSACTION (0xC00E009C) — Сообщение сейчас обрабатывается в транзакции. До определения результата этой транзакции его нельзя обрабатывать в другой транзакции.

Транзакционные очереди MSMQ могут работать как с внутренними транзакциями Message Queuing, так и с распределённой транзакцией через MS DTC. До commit/abort сообщение и связанные операции имеют транзакционное состояние, поэтому повторный receive/send нельзя рассматривать как обычный независимый повтор.

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

  • Определите транзакцию, которая уже захватила сообщение, и её текущее состояние — active, committed или aborted.
  • Не запускайте второй транзакционный receive того же сообщения до завершения первой транзакции.
  • Если блокировка остаётся после ожидаемого завершения, проверяйте зависшую DTC/MSMQ-транзакцию и владельца, а не пересоздавайте очередь.

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

После исправления проверьте и commit, и abort путь: состояние сообщения/очереди должно соответствовать исходу транзакции, а повтор не должен создавать дубликаты.

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


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

Exit mobile version