2015-11-09 69 views
2

我想知道是否有人能提供一些洞察爲什麼在NServiceBus的神祕世界是不是創造了我的傳奇數據。NServiceBus佐賀數據未創建

在NBus附帶的所有配置和XML地獄背後(默認情況下)我似乎無法讓我的傳奇數據工作。儘管我通過調試模式使用Windows憑據運行端點,但我無法創建該表,但我可以訪問SQL並創建表格,sprocs等。

我可以複製並粘貼我的配置,但這是廣泛但是我會提供我認爲對這篇文章有用的東西,但是如果你需要更多的信息,那麼請大聲說出來,我會盡力的。

我想我想知道還有哪些額外的魔法需要探索,爲了這個工作?

乾杯,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" /> 
+0

日誌中是否有錯誤?如果您設置了斷點,您的處理程序是否真的會受到影響? –

回答

3

很確定你必須在要掃描的程序集列表中包含NServiceBus.NHibernate。

變化 Configure.With(ScanAssemblies())Configure.With()

0

由於特定的軟件「集結掃描」頁面顯示,NServicBus將掃描bin文件夾組件尋找實現已知接口類型。

如果您將總線配置爲使用自定義程序集掃描,則需要在程序集列表中明確包含NServiceBus擴展。

下面的文章提供了關於未來的兼容性很好的借鑑和一些配置。

http://docs.particular.net/nservicebus/hosting/assembly-scanning

相關問題