gpt4 book ai didi

NServiceBus 和 DTC

转载 作者:行者123 更新时间:2023-12-02 21:50:47 24 4
gpt4 key购买 nike

我正在使用 NServiceBus 中的分发器,但我遇到了关于 DTC 的忽视。我以前在跨进程做事情时只使用过一次或者两次 DTC,而且次数不多,所以我对整个 DTC 概念还是个新手。

Question:
To ensure durable messaging with NSB, is it absolutely necessary to use DTC's?

我问的原因是我希望 NSB 能够检测到处理程序中的任何异常,因此通过不从队列中删除消息来对错误使用react。因此不需要 DTC。这当然意味着处理程序中的任何数据库或外部服务访问都需要程序员执行她/他自己的回滚等。因此,DTC 似乎确实是最好的方法。因此,我完全支持 DTC(如果我理解正确的话),因为从我的角度来看,它们确保消息永远不会从队列中丢失,并且只要处理程序正确实现并且让其他外部服务参与 DTC,消息处理就永远不会损坏.

但我不确定,尤其是当我在服务器上运行激活 DTC 的想法时,服务器维护团队中一位受人尊敬的人使用了这句话“DTC 会给你带来痛苦的世界!”他的数据库服务器...但他还没有就为什么我对 DTC 感到如此痛苦...:/.

对 DTC 和 NSB 有深入了解的人能否帮我澄清我对 DTC 的理解是否完全错误以及我是否完全错过了 DTC 的一些大陷阱?

亲切的问候

最佳答案

NServiceBus 分发者和 NServiceBus 中 DTC 的使用没有任何关系。无论您是否使用分销商,NServiceBus 都将使用 DTC。

NSB 分发器工作线程(甚至在不使用 NSB 分发器时单个设备上的各个工作线程)不会在分布式事务中相互征用。让我重申一下,您永远不会在单个 DTC 事务中看到两个 NSB 工作线程。每个工作线程针对本地队列启动一个事务,然后将一个(可能是远程)数据库添加到该事务中(这使其成为分布式)

这个概念有一个很好的说明 here

我认为您没有遗漏任何重大陷阱。我只是将两个概念解耦:NSB 分配器以及 NSB 如何使用分布式事务

关于NServiceBus 和 DTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15303382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com