【发布时间】:2016-04-02 05:56:36
【问题描述】:
我已经阅读了 Udi 的文章Life without distributed transactions。
MassTransit 是否支持分布式事务? (为了避免在MassTransit上出现重复问题,不要手动检查代码)
【问题讨论】:
标签: .net transactionscope servicebus masstransit
我已经阅读了 Udi 的文章Life without distributed transactions。
MassTransit 是否支持分布式事务? (为了避免在MassTransit上出现重复问题,不要手动检查代码)
【问题讨论】:
标签: .net transactionscope servicebus masstransit
MassTransit 有一个名为 Courier 的功能,它使用执行/补偿式路由单方法实现分布式事务。您可以在 GitHub 上查看代码示例:https://github.com/MassTransit/Sample-Booking
传送单将事务分解为一组按原子顺序执行的活动,并在传送单中记录补偿信息。如果某个活动出现故障,则会对先前完成的活动进行补偿,从而不会让部分事务处于打开状态。
这是进行分布式事务的基础,并且已在当今生产中的多个大型分布式事务处理应用程序中使用。
Courier 用法的另一个好例子:https://github.com/phatboyg/Demo-Registration
【讨论】:
添加了文档以演示如何使用 MT3 完成此操作:
但是您仍然需要在生产中进行监控,以了解在数据库故障和 RabbitMQ 代理断开/重新连接以确保行为符合预期时会发生什么。
或者,也许您也可以查看Using Sagas in MT,它旨在管理分布式事务的复杂性,而无需锁定和即时一致性。 :)
【讨论】: