如何在MassTransit上动态通知延迟的预定事件?

时间:2016-04-28 14:04:35

标签: rabbitmq masstransit

在Sample-ShoppingWeb的ShoppingCartStateMachine上有一个这样的配置来安排事件:

 Schedule(() => CartExpired, x => x.ExpirationId, x =>
            {
                x.Delay = TimeSpan.FromSeconds(10);
                x.Received = e => e.CorrelateById(context => context.Message.CartId);
            });

请注意" x.Delay"属性,是在构造函数上设置的,但在我的情况下,我想通知dinamically时间延迟。

When(ApproveOrder)
                .Then(context =>
                {
                    context.Instance.EstimatedTime = context.Data.EstimatedTime;
                    context.Instance.Status = context.Data.Status;
                })

...并使用" context.Data.EstimatedTime"设置计划事件。延迟,例如

有一种方法可以使用" Schedule"状态机构造函数类的声明?

1 个答案:

答案 0 :(得分:1)

状态机中使用的When(ApproveOrder) .Then(context => context.Instance.EstimatedTime = context.Data.EstimatedTime) .Schedule(CartExpired, context => context.Instance.EstimatedTime) 扩展名已得到增强,以增加对动态延迟的支持。例如,您可以执行以下操作:

{{1}}

这将使用第二个参数的延迟,而不是创建计划时指定的延迟。