В моем приложении пользователь может запускать обновления для определенного ресурса. Когда это происходит, отправляется событие UpdateInitiated
.
Сага MassTransit запускается на основе этого события и запускает серию других событий, пока не сочтет себя выполненным и не завершится.
Пока идет обновление, пользователи могут вносить изменения в ресурс и запрашивать новое обновление. Я пытаюсь понять, как я могу прервать текущую сагу и создать новый экземпляр, когда новое событие UpdateInitiated
отправляется для того же ресурса.
Я думаю о двух подходах
Корреляция по ResourceId. Таким образом, первоначальная сага также получит второе событие
UpdateInitiated
. Но тогда я не знаю, как сбросить сагу (и перестать прислушиваться к событиям, связанным с предыдущим обновлением).Используйте
CorrelatedBy<Guid>
(как я сейчас делаю). Это создаст новую сагу для нового события обновления. Но тогда я не знаю, как отменить начальную сагу.
Есть ли способ прослушать произвольные события в саге? Например: прослушивать все UpdatedInitiated
события, даже если они не коррелируют, и отменить текущую сагу, если есть событие с совпадающим ResourceId.