Sql server Sql Server Service Broker如何与MSDTC交互
在这种情况下,我们在ServiceBroker队列上发送消息,作为分布式事务的一部分。显然,我们只希望在事务完成时发送消息 然而,我们发现,在这种情况下,队列的接收端在事务提交之前接收消息,以某种方式也被注册。如果发送方随后回滚,这将导致连锁反应问题,最终导致队列因有毒消息而被禁用Sql server Sql Server Service Broker如何与MSDTC交互,sql-server,database,transactions,service-broker,Sql Server,Database,Transactions,Service Broker,在这种情况下,我们在ServiceBroker队列上发送消息,作为分布式事务的一部分。显然,我们只希望在事务完成时发送消息 然而,我们发现,在这种情况下,队列的接收端在事务提交之前接收消息,以某种方式也被注册。如果发送方随后回滚,这将导致连锁反应问题,最终导致队列因有毒消息而被禁用 这是预期的行为吗?如果是这样,我们如何以事务方式发送消息?是否会这样,您正在阅读带有NOLOCK提示的队列?在这种情况下,您可以在队列中看到消息,但实际上您无法接收它!只有在事务提交后,才能接收它 我很惊讶发送的回滚
这是预期的行为吗?如果是这样,我们如何以事务方式发送消息?是否会这样,您正在阅读带有NOLOCK提示的队列?在这种情况下,您可以在队列中看到消息,但实际上您无法接收它!只有在事务提交后,才能接收它 我很惊讶发送的回滚会触发有毒消息检测。去测试!这就是问题所在!似乎接收方也在同一个分布式事务中结束,因此发送和接收方在同一个事务中结束!与WCF事务和DCOM的大量交互使事情变得更加复杂