状态机中路由单的发件箱?
Outbox for routing slip in statemachine?
在我的一个状态机操作中,我创建了一个路由单来执行一系列命令。这是通过调用
_busControl.Execute(routingSlip);
但有时由于并发问题,saga 提交会失败。是否有类似 "outbox" 的机制来延迟将路由单发送到总线,直到传奇成功提交?
是的,您可以使用发件箱延迟发送:
http://masstransit-project.com/MassTransit/usage/exceptions.html#outbox
cfg.ReceiveEndpoint("input-queue", e =>
{
e.UseInMemoryOutbox();
e.StateMachineSaga(...);
});
但是,您将需要在状态机事件处理程序中使用 ConsumeContext
来执行传送名单,而不是使用 _busControl
。 IBus
或 IBusControl
绝不应该在消费者内部使用。 documentation 有更多详细信息。
在我的一个状态机操作中,我创建了一个路由单来执行一系列命令。这是通过调用
_busControl.Execute(routingSlip);
但有时由于并发问题,saga 提交会失败。是否有类似 "outbox" 的机制来延迟将路由单发送到总线,直到传奇成功提交?
是的,您可以使用发件箱延迟发送:
http://masstransit-project.com/MassTransit/usage/exceptions.html#outbox
cfg.ReceiveEndpoint("input-queue", e =>
{
e.UseInMemoryOutbox();
e.StateMachineSaga(...);
});
但是,您将需要在状态机事件处理程序中使用 ConsumeContext
来执行传送名单,而不是使用 _busControl
。 IBus
或 IBusControl
绝不应该在消费者内部使用。 documentation 有更多详细信息。