我是 NServiceBus 的新手,并试图找到对使用补偿事务的场景进行建模的最佳方法。
例如,假设我有一个典型的 BookHotel 场景:
在令人满意的情况下,消息传递流程将按如下方式进行:
- BookHotelCommand --> BookHotelSaga
- BookFlightCommand --> 回复 IFlightBookedMessage
- BookRentalCommand --> 回复 IrentalBookedMessage
- ReplyToOriginator --> HotelBookedMessage
我将如何在上述流程中为补偿交易建模?基于某些业务条件,我最初考虑在上述回复之一中调用“UnbookHotelSaga”。然而,我似乎遇到了一些挑战,让这个工作。如果这是正确的方法,有 Saga 经验的人可以发表评论吗?
这是我认为可以通过调用另一个 Saga 来实现的场景:
- BookHotelCommand --> BookHotelSaga
- BookFlightCommand --> 回复 IFlightBookedMessage
- BookRentalCommand --> (条件满足) --> UnbookHotelCommand --> UnbookHotelSaga
- UnbookRentalCommand --> 回复 IUnbookRentalMessage
- UnbookFlightCommand --> 回复 IUnbookFlightMessage
- UnbookHotelCommand --> ReplyToOriginator --> UnbookedHotelMessage
有人可以就实施补偿交易的最佳实践方法提出建议吗?