【问题标题】:nServiceBus saga nHibernatenServiceBus 传奇 nHibernate
【发布时间】:2016-01-29 11:22:39
【问题描述】:

我是 nServiceBus 的新手。

nServiceBus 版本:2.6.0.1505

我想将 saga 保存在数据库中。 为什么这不起作用:

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,版本=2.6.0.1505,文化=中性, PublicKeyToken=9fc386479f8a226c]] during state Initial while processing 开机

在这个版本的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] 信息 NServiceBus.Unicast.UnicastBus [(null)] - 收到消息 Messages.StartCmd, Messages, Version=1.0.0.0, Cultu re=neutral, PublicKeyToken=null,ID 为 0adbb2fd-4a7d-4fa2-ae09-70bbcbbc8241\206 9 来自发件人 MyWebClient@USER-PC 2012-07-30 16:36:12,232 [Worker.5] 信息 NServiceBus.Unicast.UnicastBus [(null)] - 不能 模拟,因为传入消息中没有指定 Windows 身份。 这在互操作场景中很常见。

2012-07-30 16:36:12,294 [Worker.5] 警告 NServiceBus.Unicast.Transport.Msmq.Msmq 传输 [(null)] - 未能为消息引发“传输消息已收到”事件 ID=0adbb2fd-4a7d-4fa2-ae09-70bbcbbc8241\2069 Spring.Objects.Factory.UnsatisfiedDependencyException:创建错误 名称为 'NServiceBus.Sagas.Impl.SagaMessageHandler' 的对象: 通过对象属性“Persister”表达的不满足的依赖关系: 有 2 个 [NService Bus.Saga.ISagaPersister] 类型的对象用于 按类型自动装配,当应该只有 1 能够 对象“NServiceBus.Sagas.Impl”的自动装配属性“Persister”。 SagaMessageHandler'。在 Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.Autowi reByType(字符串名称,RootObjectDefinition 定义,IObjectWrapper 包装器,M utablePropertyValues 属性)在 Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.Popula teObject(字符串名称,RootObjectDefinition 定义,IObjectWrapper 包装器)在 Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.Config ureObject(字符串名称,RootObjectDefinition 定义,IObjectWrapper 包装器)在 Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.Instan tiateObject(字符串名称,RootObjectDefinition 定义,对象 [] 参数,布尔值allowEagerCaching,布尔值suppressConfigure)
在 Spring.Objects.Factory.Support.AbstractObjectFactory.GetObjectInternal(Str ing 名称、类型 requiredType、Object[] 参数、布尔值 抑制配置)在 Spring.Objects.Factory.Support.AbstractObjectFactory.GetObject(字符串 名称)在 Spring.Objects.Factory.Support.DefaultListableObjectFactory.GetObjectsOfTy pe(Type type, Boolean includePrototypes, Boolean 包括工厂对象)在 Spring.Context.Support.AbstractApplicationContext.GetObjectsOfType(类型 类型,布尔 includePrototypes,布尔 includeFactoryObjects)在 NServiceBus.ObjectBuilder.Spring.SpringObjectBuilder.NServiceBus.ObjectBui lder.Common.IContainer.Build(类型 typeToBuild)在 NServiceBus.ObjectBuilder.Common.CommonObjectBuilder.NServiceBus.ObjectBui lder.IBuilder.BuildAndDispatch(类型 typeToBuild,Action`1 动作)
在 NServiceBus.Unicast.UnicastBus.DispatchMessageToHandlersBasedOnType(IMessa ge toHandle, 类型 messageType) at NServiceBus.Unicast.UnicastBus.HandleMessage(TransportMessage m) 在 NServiceBus.Unicast.UnicastBus.TransportMessageReceived(对象发送者, Tra nsportMessageReceivedEventArgs e) 在 NServiceBus.Unicast.Transport.Msmq.MsmqTransport.OnTransportMessageReceive d(TransportMessage 消息)

看起来这就是它失败的原因:

有 2 个 [NService Bus.Saga.ISagaPersister] 类型的对象用于 按类型自动装配,当应该只有 1 能够 对象“NServiceBus.Sagas.Impl”的自动装配属性“Persister”。 SagaMessageHandler'

【问题讨论】:

  • 您是否查看了 NSB 附带的 Saga 示例?你有 Saga 配置集吗?
  • 我在配置文件中有 NHibernateSagaPersisterConfig 部分。

标签: nservicebus


【解决方案1】:

这里是如何使用 NHibernate 持久化 saga。

端点配置(不需要 IWantCustomInitialization):

public class MessageEndpoint : IConfigureThisEndpoint, AsA_Server
{
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多