Я новичок в 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
Может ли кто-нибудь посоветовать лучший подход к реализации компенсационных транзакций?