Служба WCF MSMQ не повторяется при использовании транзакций - PullRequest
0 голосов
/ 30 марта 2011

У меня есть служба wcf, которую я размещаю в службе Windows на сервере Windows 2003, который прослушивает очередь MSMQ. Я установил ReceiveRetryCount = 2 для привязки netmsmq. Служба была настроена для использования транзакций ([OperationBehavior (TransactionScopeRequired = true, TransactionAutoComplete = true)]). Служба функционировала отлично.

Мне нужно было отключить транзакции из-за вызова базы данных, который не мог поддерживать MSDTC. Поэтому я переключил свойства сервиса на

[OperationBehavior(TransactionScopeRequired = false)]

Теперь, когда выдается исключение или ошибка, повторных попыток не происходит, обработчик ошибок для службы никогда не срабатывает. Исходное сообщение попадает в системный DLQ. Я хотел бы, чтобы обработчик ошибок обрабатывал ошибки после двух повторных попыток. Есть идеи?

1 Ответ

2 голосов
/ 30 марта 2011

Переключите вещи обратно, как они были раньше.

Вокруг вызова базы данных добавьте следующее (код сделан из памяти - дайте мне знать, если мне нужно это немного исправить):

// using System.Transactions;

using( var ts = new TransactionScope( TransactionScopeOption.Suppress ) )
{
  // Call DB stuff
  ts.Complete();
}
...