2013-12-11 52 views
0

首先一点介绍给我们的设置:DTC问题4 - RM_COMMIT_DELIVERY_FAILED_DUE_TO_CONNECTION_DOWN

  • 基于WCF的应用程序与EF 4背景下注射使用Unity(无单)
  • 甲骨文在一个单独的物理运行机
  • NServiceBus处理那些访问Oracle通过相同的上下文上述

我们所遇到的问题的消息,只有在我们的UAT环境,是我们如果未收到DTC上的分布式事务锁,则无法发送多个消息。 DTC跟踪告诉我们这个:

1. TRANSACTION_COMMITTED 
2. RM_ISSUED_COMMIT 
3. RM_ISSUED_COMMIT 
4. RM_ACKNOWLEDGED_COMMIT  
5. RM_COMMIT_DELIVERY_FAILED_DUE_TO_CONNECTION_DOWN 

任何好的想法?

回答

1

看来问题在于我们的客户端应用程序WCF配置。

在我们的框架内部深处,我们设置了TransactionFlow = true,它试图从客户端开始设置事务范围。如果我们运行我们的请求并触发NServiceBus消息,我们将失去与客户端的链接,并且无法提交事务。

所以TransactionFlow = false在app.config中救了我们。