masstransit - 状态机中路由单的发件箱?
问题描述
在我的一个状态机操作中,我创建了一个路由单以执行一系列命令。这是通过调用
_busControl.Execute(routingSlip);
但有时由于并发问题,saga 提交失败。是否有类似“发件箱”的机制来推迟将路由单发送到总线,直到成功提交传奇?
解决方案
是的,您可以使用发件箱来推迟发送:
http://masstransit-project.com/MassTransit/usage/exceptions.html#outbox
cfg.ReceiveEndpoint("input-queue", e =>
{
e.UseInMemoryOutbox();
e.StateMachineSaga(...);
});
但是,您将需要使用ConsumeContext
状态机事件处理程序中的 而不是使用_busControl
. IBus
或者IBusControl
永远不应该在消费者内部使用。该文档有更多详细信息。
推荐阅读
- php - 如何从 Laravel Dusk 的下拉列表中选择随机值?
- javascript - 卡住:更新实例化 JSON 对象中的键/值而不删除其他特征
- python - python中带有“...”的import语句是什么意思?
- r - 如何为曲线下面积修复此 R 代码?
- javascript - 使用 redux 并得到 Parsing error: Unexpected token
- javascript - 如何使用 instafeed.js 抓取视频而不仅仅是照片
- php - 表单数据被插入 MySQL 表,但服务器仍然抛出错误
- tensorflow - 保存 SavedModel:ValueError:至少两个变量具有相同的名称
- html - 2列文本和图像填充问题
- arrays - 在 ReactJS 中将图像数组导入为缩略图