使用事务时,WCF MSMQ服务不重试

时间:2011-03-30 16:54:39

标签: wcf msmq

我有一个wcf服务,我在Windows 2003服务器上的一个Windows服务中托管,该服务正在侦听MSMQ队列。我在netmsmqbinding上设置了ReceiveRetryCount = 2。该服务设置为使用事务([OperationBehavior(TransactionScopeRequired = true,TransactionAutoComplete = true)])。这项服务运作良好。

由于数据库调用无法支持MSDTC,我需要关闭事务。所以我将服务属性切换到

[OperationBehavior(TransactionScopeRequired = false)]

现在,当抛出异常或错误时,不会发生重试,该服务的错误处理程序永远不会触发。原始消息最终在系统DLQ中。我希望故障处理程序在两次重试后处理故障。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

将事情改回原来的状态。

在数据库调用周围,添加以下内容(代码是从内存中完成的 - 让我知道是否需要解决这个问题):

// using System.Transactions;

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