masstransit - 中止 MassTransit Saga 的活动链
问题描述
我试图弄清楚如何中止一系列活动,如果一个活动确定有问题,那么 Saga 应该被最终确定。
例如:
Initially(
When(UpdateRequested)
.Activity(x => x.OfType<InitialSetup>())
.Activity(x => x.OfType<StartUpdating>())
.TransitionTo(Updating)
InitialSetup
将根据从数据库加载的一些信息配置 Saga。让它意识到缺少所需的数据,并且应该在StartUpdating
运行活动之前完成 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())
);
推荐阅读
- apache-spark - 使用 apache Livy 创建 Spark 会话时出错
- java - 如何以编程方式获取 Android 10 中设备的序列号?
- python - 卡托皮米勒投影中纬度标签的奇怪设置
- google-anthos - AccessDeniedException: 403 没有 storage.objects.list 访问 config-management-release
- php - Laravel Passport Auth::attempt() 在我安装默认 laravel 授权后总是返回 false
- flutter - 使用 Bloc 列出项目
- php - 有没有人有在浏览器中打开 PHP/HTML/JS 以获取可视代码的经验?
- gradle - 将环境变量传递给 gradle.properties
- php - Bootstrap navbar-default 隐藏表单内容
- reactjs - 它不会进入我的循环,但它像条件一样优越