Saga で NServiceBus 3.0 ITimeoutState および IHandleTimeouts 機能を使用しようとしています。次のコードスニップがあります。次のコードは、NServiceBus.3.0.0-rc5 で問題なく正常に動作します。しかし、3.0.0 以上のバージョンで DLL を更新すると、サガのタイムアウトが期待どおりに機能せず、次の警告が表示されます。
2012-04-05 09:15:26,267 [Worker.5] INFO NServiceBus.Sagas.Impl.SagaDispatcherFactory [(null)] <(null)> - ID 9496c29e のメッセージ タイプ SomeNameSpace.MySagaTimeout のサガが見つかりませんでした- f745-4ada-8212-99e47324922b\20920. SagaNotFoundHandlersを呼び出します。
この問題を解決するのを手伝ってください。
TimeoutMessage:
public class MySagaTimeout : ITimeoutState
{
public InputMessage1 Source { get; set; }
}
サガコード:
public class BrandMerchandisingRoot : Saga<MySagaState>,
IAmStartedByMessages<InputMessage1>,
IHandleTimeouts<MySagaTimeout>,
IHandleMessages<MySagaTimeout>
{
public void Handle(InputMessage1 message)
{
RequestUtcTimeout(5.Seconds(), new MySagaTimeout {Source = message});
}
public void Timeout(MySagaTimeout state)
{
//some other code here
}
public void Handle(MySagaTimeout message)
{
Timeout(message);
}
}
構成:
Configure.With()
.StructureMapBuilder(ObjectFactory.Container)
.RunTimeoutManager()
.UseInMemoryTimeoutPersister()
.MsmqSubscriptionStorage()
.Sagas()
.UnicastBus();
注: 私は独自の saga 永続化機能を使用しており、 IFindSagas<MySagaState>.Using<MySagaTimeout>の実装があります。