我正在尝试连接我的第一个 Saga,但无法让接收端点正确处理启动消息。我得到以下异常:
SagaMessageHandler 处理消息失败。Spring.Objects.Factory.UnsatisfiedDependencyException:创建名称为“NServiceBus.Sagas.Impl.SagaMessageHandler”的对象时出错:通过对象属性“Persister”表示不满足的依赖关系:有 2 个类型为 [NServiceBus.Saga.ISagaPersister] 的对象用于按类型自动装配,当应该只有 1 个能够自动装配对象“NServiceBus.Sagas.Impl.SagaMessageHandler”的属性“Persister”时。
我猜内存中的持久化器和 NHibernateSagaPersister 都存在冲突,但我不知道如何解决这个问题。我的配置是这样的:
public class SubscriberEndpointConfig : IWantCustomInitialization, IConfigureThisEndpoint
{
public void Init()
{
_logger.Info("Subscriber is initializing..");
Configure.With()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport().IsTransactional(true).IsolationLevel(IsolationLevel.ReadCommitted).PurgeOnStartup(false)
.UnicastBus().LoadMessageHandlers(First<GridInterceptingMessageHandler>.Then<SagaMessageHandler>())
.Sagas()
.NHibernateSagaPersister()
.Log4Net();
}
}
如果我删除 LoadMessageHandlers(),错误就会消失,但我的处理程序当然不会被调用。有什么想法吗?当我在生产配置文件中使用 AsA_Server 时,传奇工作正常,没有自定义初始化,但出于其他原因我需要使用它。