NServiceBus传奇数据未创建
本文关键字:创建 数据 传奇 NServiceBus | 更新日期: 2023-09-27 18:21:24
我想知道是否有人能深入了解为什么在NServiceBus的神秘世界中没有创建我的传奇数据。
在NBus附带的所有配置和XML地狱(默认情况下)背后,我似乎无法让我的传奇数据正常工作。尽管我使用我的windows凭据通过调试模式运行端点,但由于任何原因,该表都没有创建,我可以访问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()
如特定软件"程序集扫描"页面所示,NServicBus将扫描bin文件夹中的程序集,寻找实现已知接口的类型。
如果将总线配置为使用自定义程序集扫描,则需要在程序集列表中显式包含NServiceBus扩展。
下面的文章提供了一个很好的参考和一些关于未来兼容性的配置。
http://docs.particular.net/nservicebus/hosting/assembly-scanning