Мне было интересно, может ли кто-нибудь дать некоторое представление о том, почему в таинственном мире NServiceBus мои данные о саге не создаются.NSServiceBus данные саги не созданы
За всей конфигурацией и адском XML, который поставляется с NBus (по умолчанию) Я не могу заставить данные моей саги работать. Таблица по какой-либо причине не создается, хотя я запускаю конечную точку через режим отладки, используя мои учетные данные Windows, у которых есть доступ к SQL, и могу создавать таблицы, sprocs и т. Д.
Я могу скопировать и вставить мой конфиг, но это однако я предоставлю то, что считаю полезным для этого поста, но если вам нужна дополнительная информация, тогда, пожалуйста, кричите, и я обязам.
Я думаю, мне интересно, какая дополнительная магия должна быть подключена, чтобы это работало?
Cheers, 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; }
}
EDIT Добавление какая версия используется в настоящее время.
<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" />
Есть ли ошибки в журнале? Действительно ли ваши обработчики попадают, если вы установили точки останова? –