首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nServiceBus saga nHibernate

nServiceBus saga nHibernate
EN

Stack Overflow用户
提问于 2012-07-29 20:09:53
回答 1查看 918关注 0票数 0

我是nServiceBus的新手。

nServiceBus版本:2.6.0.1505

我想要在数据库中持久化。为什么这不管用:

代码语言:javascript
复制
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中以这种方式配置端点?

编辑:

端点配置更改为:

代码语言:javascript
复制
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‘的属性“持久器”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-30 14:26:18

下面是如何使用NHibernate来持久化佐贺。

端点配置(不需要IWantCustomInitialization):

代码语言:javascript
复制
public class MessageEndpoint : IConfigureThisEndpoint, AsA_Server
{
}

诀窍是告诉主机使用产品配置文件- http://docs.particular.net/nservicebus/hosting/nservicebus-host/profiles

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11712538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档