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 完成此操作:
但是您仍然需要在生产环境中进行监控,以查看在数据库和 RabbitMQ 代理发生故障时会发生什么情况 disconnects/reconnects 以确保行为符合预期。
或者,也许您也可以查看 Using Sagas in MT,它们旨在管理分布式事务的复杂性,无需锁定和即时一致性。 :)
我读过乌迪的文章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 完成此操作:
但是您仍然需要在生产环境中进行监控,以查看在数据库和 RabbitMQ 代理发生故障时会发生什么情况 disconnects/reconnects 以确保行为符合预期。
或者,也许您也可以查看 Using Sagas in MT,它们旨在管理分布式事务的复杂性,无需锁定和即时一致性。 :)