我正在尝试在我的 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)> - 找不到消息类型 SomeNameSpace.MySagaTimeout 的 saga,id 为 9496c29e- f745-4ada-8212-99e47324922b\20920。将调用SagaNotFoundHandlers。
请帮我解决这个问题。
超时消息:
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>的实现