gpt4 book ai didi

c# - 未创建 NServiceBus saga 数据

转载 作者:行者123 更新时间:2023-11-30 21:53:52 24 4
gpt4 key购买 nike

我想知道是否有人可以提供一些见解来解释为什么在 NServiceBus 的神秘世界中没有创建我的 saga 数据。

在 NBus 附带的所有配置和 XML hell (默认情况下)背后,我似乎无法让我的 saga 数据正常工作。尽管我使用我的 Windows 凭据通过 Debug模式运行端点,但无论出于何种原因,该表都没有被创建,我可以访问 SQL 并可以创建表、存储过程等。

我可以复制和粘贴我的配置,但这很广泛,但是我会提供我认为对这篇文章有用的内容,但如果您需要更多信息,请大声说出来,我会尽力的。

我想我想知道需要加入什么额外的魔法才能让它发挥作用?

干杯,DS。

public class EndpointConfig : 
IConfigureThisEndpoint,
AsA_Publisher,
IWantCustomInitialization,
IWantToRunBeforeConfigurationIsFinalized
{
public void Init()
{
Configure.Serialization.Json();
Configure.With(ScanAssemblies())
.DefaultBuilder()
.UseNHibernateSubscriptionPersister()
.UseNHibernateTimeoutPersister()
.UseNHibernateSagaPersister()
.EnablePerformanceCounters()
.DefiningCommandsAs(MessageTypeDefinition.IsCommand)
.DefiningEventsAs(MessageTypeDefinition.IsEvent)
.UnicastBus();

Configure.Transactions.Advanced(x => x.DisableDistributedTransactions());
}

private static Assembly[] ScanAssemblies()
{
return new[] { typeof(Foo).Assembly, typeof(EndpointConfig).Assembly };
}
}

行动中的传奇......

public class MySaga :
Saga<SagaData>,
IAmStartedByMessages<SomeContract >,
IHandleMessages<SomeOtherContract>
{
public override void ConfigureHowToFindSaga()
{
this.ConfigureMapping<SomeContract>(x => x.Blah).ToSaga(y => y.UniqueRef);
this.ConfigureMapping<SomeOtherContract>(x => x.Hello).ToSaga(y => y.UniqueRef);
}

public void Handle(SomeContract message)
{
this.Data.HasFoo = true;
this.DoStuff();
}

public void Handle(SomeOtherContract message)
{
this.Data.HasBar = true;
this.DoStuff();
}

private void DoStuff()
{
if (this.HasCompleted())
{
this.Bus.Send(new Something());
this.MarkAsComplete();
}
}

private bool HasCompleted()
{
return this.Data.HasFoo && this.Data.HasBar;
}
}

public class SagaData : IContainSagaData
{
public SagaData()
{
}

public virtual Guid Id { get; set; }

public virtual string OriginalMessageId { get; set; }

public virtual string Originator { get; set; }

public virtual bool HasFoo { get; set; }

public virtual bool HasBar { get; set; }

[Unique]
public virtual string UniqueRef { get; set; }
}

编辑添加当前使用的版本。

<package id="NHibernate" version="3.3.3.4001" targetFramework="net451" />
<package id="NServiceBus" version="4.6.10" targetFramework="net451" />
<package id="NServiceBus.Host" version="4.6.10" targetFramework="net451" />
<package id="NServiceBus.Interfaces" version="4.6.10" targetFramework="net451" />
<package id="NServiceBus.NHibernate" version="4.5.5" targetFramework="net451" />

最佳答案

很确定您必须在要扫描的程序集列表中包含 NServiceBus.NHibernate。

改变Configure.With(ScanAssemblies())Configure.With()

关于c# - 未创建 NServiceBus saga 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33613607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com