我是nServiceBus的新手。
nServiceBus版本:2.6.0.1505
我想要在数据库中持久化。为什么这不管用:
public class MessageEndpoint : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization
{
public void Init()
{
Configure.With().DefaultBuilder().Sagas().NHibernateSagaPersister();
}
}它抛出一个错误:
异常发生在Topshelf.Internal.ServiceController`1[NServiceBus.Host.Internal.GenericHost,NServiceBus.Host、Version=2.6.0.1505、Culture=neutral、PublicKeyToken=9fc386479f8a226c]处理OnStart时的初始状态。
是否可以在此版本的nServiceBus中以这种方式配置端点?
编辑:
端点配置更改为:
public class MessageEndpoint : IConfigureThisEndpoint,
AsA_Server,
IWantCustomInitialization
{
public void Init()
{
Configure.With()
.DefaultBuilder()
.XmlSerializer()
.Sagas()
.NHibernateSagaPersister();
}
}Saga执行,但抛出异常:
2012-07-30 16:36:12,229 Worker.5 INFO NServiceBus.Unicast.UnicastBus (null) < (null) > -接收到的消息Messages.StartCmd、消息、Version=1.0.0.0、Cultu re=neutral、ID为0adbb2fd-4a7d-4fa2-ae09-70bbcbbc 8241\206 9的PublicKeyToken=null来自发件人MyWebClient@USER@USER-PC 2012-07-30 16:36:12 232 Worker.5 INFO NServiceBus.Unicast.UnicastBus (空) <(null)> -不能模拟,因为传入消息中没有指定的windows标识。这在互操作场景中很常见。 2012-07-30 16:36:12,294工作人员5警告Spring.Objects.Factory.UnsatisfiedDependencyException: NServiceBus.Unicast.Transport.Msmq.Msmq传输(null) <(null)> -为ID=0adbb2fd-4a7d-4fa2-ae09-70bbcbbc 8241\2069 NServiceBus.Unicast.Transport.Msmq.Msmq Bus.Saga.ISagaPersister事件引发‘传输消息接收’事件,创建对象名为'NServiceBus.Sagas.Impl.SagaMessageHandler‘:不满意的依赖项通过对象属性’Persister‘扩展:有2个NService Bus.Saga.ISagaPersister类型的对象用于按类型自动更新,当只有1才能自动生成对象'NServiceBus.Sagas.Impl‘的“持久器”属性时。SagaMessageHandler'.在Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.Autowi reByType(String name,RootObjectDefinition定义,IObjectWrapper包装,M utablePropertyValues属性) at Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.Popula teObject(String name,RootObjectDefinition definition,IObjectWrapper wrapper) at Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.Config ureObject(String name,RootObjectDefinition definition,IObjectWrapper包装器) at Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.Instan tiateObject(String name,RootObjectDefinition definition,Object[]参数,Bo O名表,Bo) 在Spring.Objects.Factory.Support.AbstractObjectFactory.GetObjectInternal(Str ing name,在Spring.Objects.Factory.Support.AbstractObjectFactory.GetObject(String名称处键入requiredType、Object[]参数、布尔suppressConfigure),在Spring.Context.Support.AbstractApplicationContext.GetObjectsOfType(Type ty pe (类型类型、布尔includePrototypes、布尔includeFactoryObjects)处,布尔includePrototypes,( NServiceBus.ObjectBuilder.Spring.SpringObjectBuilder.NServiceBus.ObjectBui lder.Common.IContainer.Build(typeToBuild类型) at NServiceBus.ObjectBuilder.Common.CommonObjectBuilder.NServiceBus.ObjectBui lder.IBuilder.BuildAndDispatch( typeToBuild,action‘1)) 在NServiceBus.Unicast.UnicastBus.DispatchMessageToHandlersBasedOnType(IMessa ge toHandle,Type messageType) at NServiceBus.Unicast.UnicastBus.HandleMessage(TransportMessage m)在NServiceBus.Unicast.UnicastBus.TransportMessageReceived(Object发件人处,Tra nsportMessageReceivedEventArgs e)在NServiceBus.Unicast.Transport.Msmq.MsmqTransport.OnTransportMessageReceive d(TransportMessage msg)
看起来这就是它失败的原因:
有两个类型为NService Bus.Saga.ISagaPersister的对象用于按类型自动更新,而此时应该只有一个对象才能自动创建对象'NServiceBus.Sagas.Impl. SagaMessageHandler‘的属性“持久器”。
发布于 2012-07-30 14:26:18
下面是如何使用NHibernate来持久化佐贺。
端点配置(不需要IWantCustomInitialization):
public class MessageEndpoint : IConfigureThisEndpoint, AsA_Server
{
}诀窍是告诉主机使用产品配置文件- http://docs.particular.net/nservicebus/hosting/nservicebus-host/profiles。

https://stackoverflow.com/questions/11712538
复制相似问题