2016-04-28 27 views
1

在採樣ShoppingWeb的ShoppingCartStateMachine有這樣的配置,調度事件:如何聲明在MassTransit上動態通知延遲的預定事件?

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

在狀態機中使用的Schedule擴展增強了對動態延遲的支持。例如,你可以做到以下幾點:

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

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