我正在尝试连接我的第一个Saga,并且无法让接收端点正确处理启动消息。我得到以下异常:
SagaMessageHandler处理失败 信息。 Spring.Objects.Factory.UnsatisfiedDependencyException: 使用名称创建对象时出错 'NServiceBus.Sagas.Impl.SagaMessageHandler' :表达不满意的依赖性 通过对象属性'Persister': Type有2个对象 [NServiceBus.Saga.ISagaPersister] for 按类型自动装配,何时应该 已经只有1才能够 autowire属性'Persister' 宾语 '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而没有自定义初始化时,saga正常工作,但我需要将其用于其他原因。
答案 0 :(得分:1)
nservicebus配置文件正在为您配置容器(http://www.nservicebus.com/Profiles.aspx)
NServiceBus.Lite(默认)= InMemory
NServiceBus.Integration = NHibernate + Sqlite
NServiceBus.Production = NHibernate
因此,在您的情况下,您可以删除对NHibernateSagaPersister()的调用,并让配置文件执行它。