中止 MassTransit Saga 的活动链
Abort chain of activities for MassTransit Saga
我正在尝试弄清楚如何中止一系列活动,如果其中一个 activity 认为有问题,那么应该完成 Saga。
例如:
Initially(
When(UpdateRequested)
.Activity(x => x.OfType<InitialSetup>())
.Activity(x => x.OfType<StartUpdating>())
.TransitionTo(Updating)
InitialSetup
将根据从数据库加载的一些信息配置 Saga。让我们意识到缺少所需的数据,并且应该在 StartUpdating
activity 是 运行.
之前完成 Saga
我怎样才能做到这一点?
您可以抛出一个异常,捕获它,然后使用 catch 分支来完成 saga。
Initially(
When(UpdateRequested)
.Activity(x => x.OfType<InitialSetup>()) // activity throws
.Activity(x => x.OfType<StartUpdating>())
.TransitionTo(Updating)
.Catch<MissingDataException>(x => x.Finalize())
);
我正在尝试弄清楚如何中止一系列活动,如果其中一个 activity 认为有问题,那么应该完成 Saga。
例如:
Initially(
When(UpdateRequested)
.Activity(x => x.OfType<InitialSetup>())
.Activity(x => x.OfType<StartUpdating>())
.TransitionTo(Updating)
InitialSetup
将根据从数据库加载的一些信息配置 Saga。让我们意识到缺少所需的数据,并且应该在 StartUpdating
activity 是 运行.
我怎样才能做到这一点?
您可以抛出一个异常,捕获它,然后使用 catch 分支来完成 saga。
Initially(
When(UpdateRequested)
.Activity(x => x.OfType<InitialSetup>()) // activity throws
.Activity(x => x.OfType<StartUpdating>())
.TransitionTo(Updating)
.Catch<MissingDataException>(x => x.Finalize())
);