【发布时间】:2015-05-26 10:29:10
【问题描述】:
Rebus 根据此不支持 DTC:https://github.com/rebus-org/Rebus/wiki/Transactions 但根据此https://github.com/rebus-org/Rebus/wiki/Automatic-retries-and-error-handling Rebus 确实使用了 TransactionScope。我想这意味着总是使用不能跨越多台机器或连接的轻量级事务。
在我的情况下,我想要一个 EventHandler,它首先向 Firebird 写入内容,然后写入 RavenDB。 Firebird 和 RavenDB 都能够参与分布式事务。但它们在 Rebus 创建的 TransactionScope 中使用。
我是否必须在 EventHandler 中创建一个带有“Require New”的新嵌套 TransactionScope,以便 Firebird 和 RavenDB 通过 DTC 一起提交。或者我是否必须为 Rebus 进行 DTC 实现才能使其正常工作。
作为替代方案,我可能只需要按照 Rebus wiki 中的建议进行每次写入 IdemPotent。
我想这个问题比 Rebus 更笼统。当某些连接允许而某些不允许时,这实际上是关于 TransactionScope 的行为和对 DTC 的提升。
【问题讨论】:
标签: .net transactionscope rebus