Скажем, у меня есть транзакционная очередь.Что происходит, когда транзакция MSMQ не выполняется/прервана?
var msgQ = MessageQueue.Create(@".\$private\Orders", True)
msgQ.DefaultPropertiesToSend.Recoverable = true;
Теперь предположим, что я иду, чтобы потреблять сообщение из очереди ...
var msgTx = New MessageQueueTransaction();
msgTx.Begin();
var msg = msgQ.Receive(msgTx)
... , а затем машина идет вниз перед фиксации или отмены может иметь место.
Что происходит с сообщением, которое я пытался получить?
Что делать, если фиксация/прерывание никогда не происходит? Производится ли прерывание, основанное на некоторых критериях? Если да, то каковы эти критерии (или где я могу найти документацию)? – MushinNoShin
Завершение транзакции. Кажется, что нет какой-либо документации, [@ JohnBreakwell's answer] (http://stackoverflow.com/a/5905569/43846) на [этот вопрос] (http://stackoverflow.com/questions/5903538/messagequeuetransaction-timeout) намекает на это, хотя. – stuartd
MSMQ должен обнаружить, что приложение ушло и очистилось, восстановив сообщение в исходное состояние в очереди. Сообщения, не связанные с транзакциями, будут уничтожены. –