MassTransit 是否支持分布式事务?

does MassTransit support distributed transactions?

我读过乌迪的文章Life without distributed transactions

MassTransit 是否支持分布式事务? (为了避免MassTransit上的重复问题,不通过代码手动检查)

MassTransit 有一个称为 Courier 的功能,它使用 execute/compensate 样式的路由单方法实现分布式事务。您可以在 GitHub 上查看代码示例:https://github.com/MassTransit/Sample-Booking

路由单将事务分解为一组活动,这些活动按顺序自动执行,并在路由单中记录补偿信息。如果 activity 出现故障,先前完成的活动将得到补偿,以便部分事务不会保持打开状态。

这是做分布式事务的基础,目前已经在生产中的几个大型分布式事务处理应用中使用。

Courier 用法的另一个很好的例子:https://github.com/phatboyg/Demo-Registration

添加了文档以演示如何使用 MT3 完成此操作:

Managing transactions in MT

但是您仍然需要在生产环境中进行监控,以查看在数据库和 RabbitMQ 代理发生故障时会发生什么情况 disconnects/reconnects 以确保行为符合预期。

或者,也许您也可以查看 Using Sagas in MT,它们旨在管理分布式事务的复杂性,无需锁定和即时一致性。 :)