Проблема TransactionScope с очередями сообщений - PullRequest
1 голос
/ 22 февраля 2010

Я столкнулся со следующей проблемой. У меня есть кусок кода, который выглядит так:

DoSomething(){
  using (TransactionScope scope = new TransactionScope())
    {
      InsertSomething();
      InsertSomethingElse();
      InsertYetAnotherThing();
      ProcessDataRelatedWithThePreviousInserts();
      scope.Complete()
    }
}

В ProcessDataRelatedWithThePreviousInserts я проверяю условие и, если необходимо, остальная часть рабочего потока перенаправляется в очередь сообщений на другом сервере. На другом сервере я восстанавливаю сообщение и продолжаю рабочий процесс (в основном делаю некоторые другие вставки, связанные с вставками в методе DoSomething).

Это теоретически, потому что мне удается это сделать, только если я удаляю TransactionScope в методе DoSomething. Есть ли способ выполнить то, что я хочу сделать, или мне нужно изменить способ обработки транзакций?

1 Ответ

0 голосов
/ 24 февраля 2010

Вы уже пробовали

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
    // ...
    using (TransactionScope innerscope = new TransactionScope(TransactionScopeOption.Supress)
    {
        ProcessDataRelatedWithThePreviousInserts();
    }
    scope.Complete();
}

явно подавляет внешнюю транзакцию для вашего вызова на ProcessDataRelatedWithThePreviousInserts () .

...