簡體   English   中英

如何在 MassTransit 上動態通知延遲的計划事件?

[英]How to declare a scheduled event with delay informed dynamically on 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”屬性,但就我而言,我想以動態方式通知該時間延遲。

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

...並設置一個帶有“context.Data.EstimatedTime”延遲的計划事件,例如

有沒有辦法在狀態機構造函數類上使用“Schedule”聲明來做到這一點?

狀態機中使用的Schedule擴展得到了增強,以增加對動態延遲的支持。 例如,您可以執行以下操作:

When(ApproveOrder)
    .Then(context => context.Instance.EstimatedTime = context.Data.EstimatedTime)
    .Schedule(CartExpired, context => context.Instance.EstimatedTime)

這將使用第二個參數的延遲,而不是創建計划時指定的延遲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM