4
我正在開發一個示例應用程序來測試使用NserviceBus的saga中的超時管理。NServiceBus TimeOut Manager
我試着實現以下
當一個傳奇開始設置它的超時時間爲1分鐘 超時之前發生,如果更新來到nessage 我的代碼是像下面
更新超時5分鐘public class OrderSaga : Saga<OrderSagaData>,
IAmStartedByMessages<SampleMessage>,
IHandleMessages<UpdateMessage>
{
public override void ConfigureHowToFindSaga()
{
ConfigureMapping<UpdateMessage>(s => s.PurchaseOrderNumber, m => m.Update);
}
public void Handle(SampleMessage message)
{
this.Data.PurchaseOrderNumber = message.Name;
RequestTimeout(DateTime.Now.AddMinutes(1), message.Name);
}
private void Complete()
{
MarkAsComplete();
}
public override void Timeout(object state)
{
Complete();
}
#region IMessageHandler<UpdateMessage> Members
public void Handle(UpdateMessage message)
{
this.Data.PurchaseOrderNumber = message.NewValue;
RequestTimeout(DateTime.Now.AddMinutes(5), message.Update);
}
#endregion
}
}
但是,這裏的問題是超時沒有更新到5分鐘。超時仍然適用於1分鐘。
您能否讓我知道這裏做錯了什麼?
由於提前, Ajai
嗨安德烈亞斯,感謝您的快速回復。我給了MarkComplete那裏因爲我預計5分鐘後完成的傳奇。解決方案還提供了將創建一些問題,如果我更新值超過兩次,因爲它可以上升到n級更新。那麼,如何保持saga db這樣的更新數呢? – Ajai 2011-01-19 08:39:18