2011-07-08 29 views
1

我正在嘗試連接我的第一個Saga,並且無法讓接收端點正確處理啓動消息。我收到以下例外情況:如何解決與NHibernateSagaPersister的自動裝配衝突?

SagaMessageHandler處理失敗 消息。 Spring.Objects.Factory.UnsatisfiedDependencyException:與名稱 「NServiceBus.Sagas.Impl.SagaMessageHandler」 錯誤創建對象:不合格依賴通過對象屬性「持留」表示 : 有 類型的2個對象[NServiceBus.Saga .ISagaPersister]爲 autowire類型,當應該有 已經只有1能夠 autowire屬性'Persister' 對象 'NServiceBus.Sagas.Impl.SagaMessageHandler'。

我猜測內存中的持久存儲器和NHibernateSagaPersister是衝突的,但我無法弄清楚如何解決這個問題。我的配置是這樣的:

public class SubscriberEndpointConfig : IWantCustomInitialization, IConfigureThisEndpoint 
{  
    public void Init() 
    { 
     _logger.Info("Subscriber is initializing.."); 

     Configure.With()     
      .DefaultBuilder() 
      .XmlSerializer() 
      .MsmqTransport().IsTransactional(true).IsolationLevel(IsolationLevel.ReadCommitted).PurgeOnStartup(false) 
      .UnicastBus().LoadMessageHandlers(First<GridInterceptingMessageHandler>.Then<SagaMessageHandler>()) 
      .Sagas() 
      .NHibernateSagaPersister() 
      .Log4Net(); 

    } 
} 

如果我刪除LoadMessageHandlers(),錯誤消失,但當然,我的處理程序永遠不會調用。任何想法這裏有什麼不對?當我在生產配置文件中使用AsA_Server時沒有自定義初始化,但是我需要將其用於其他原因。

回答

1

的nservicebus配置文件配置爲您留存器(http://www.nservicebus.com/Profiles.aspx)

NServiceBus.Lite(默認值)= InMemory

NServiceBus.Integration = NHibernate的+ SQLite的

NServiceBus.Production = NHibernate的

所以你的情況,你可以刪除調用NHibernateSagaPersister(),並讓型材做的工作。

+0

即使使用IWantCustomInitialization? – jlew

+0

是的,你可以添加自己的配置文件,如果你需要更多的控制 –

+0

所以是真的,你只需要非通用主機的流暢配置?或在其他情況下? – jlew