2013-06-11 94 views
1

爲什麼需要使用Sagas()進行配置?我問,因爲在我注意到Sagas()不在configure.with之前,我在過去的幾個月裏一直在用raven持久化來運行一個傳奇故事,事實上我意識到我還缺少一些RavenPersistence的東西。然而,據我所知,薩加斯98%的時間都在努力工作,並堅持烏鴉。所以我想知道Sagas()配置與不配置配置有什麼不同。爲什麼使用Sagas()進行配置?

我說98%的時間的原因是我注意到隨機消息掉了一個方法,並沒有發送它指定發送在佐賀下一個消息。我很好奇,如果沒有適當的配置是造成這種情況的原因。

 _logger.InfoFormat("1.1 - Preparing Saga for; File: {0}", message.FileNumber); 

     //Creates Saga information 
     SetupSaga(uploads, 
        message.Documents, 
        message.ProcedureID.GetValueOrDefault(0), 
        file.Client.Id, 
        message.FileNumber, 
        message.Stage, 
        user); 

     _logger.InfoFormat("1.2 - Upload Saga Unique ID; File: {0}, UniqueID: {1}", message.FileNumber, Data.UniqueID); 

     Bus.SendLocal(new GetLoanInformation { 
      UniqueID = Data.UniqueID 
     }); 
+0

您是否在NServiceBus.Host.exe進程或自託管? –

+0

它作爲主機進程部署到應用程序服務器。 – MattB

+0

帖子編輯,這真的成爲一個不同的問題,我不確定是否有足夠的信息可以回答它。我鼓勵你用更多的細節創建一個新的問題(特別是SetupSaga方法是做什麼的?),然後將這個問題與這個問題聯繫起來。 –

回答

1

NServiceBus主機根據角色和配置文件自動執行大量配置。自動爲您處理Sagas配置和Raven持久性。如果您要在自託管時運行Saga,則只需手動執行此操作,這種情況會比較少見。

想要了解由於所有不同角色和配置文件而發生的情況,請查看All About NServiceBus Host Profiles and Roles。 (免責聲明:這是我的博客文章。)

你提到的問題是由於其他原因,但需要更多的信息來診斷它。

+0

我將有問題的代碼添加到了我原來的問題中。感謝您的博客,這對理解配置文件和角色肯定會派上用場。至於我提供的代碼,那是它正在脫落的部分。該方法做了一些初步工作,設置了傳奇,然後發送消息到下一行。大約2%的時間,它永遠不會發送下一條消息。 – MattB

+0

我檢查了交易死信隊列,並沒有看到任何這些消息落入那裏。這個傳奇仍然存在於烏鴉,所以它不會被刪除。我只是不確定它是否是時機問題?也許創建傳奇數據實體然後發送下一條消息的速度比將傳奇數據存儲到烏鴉的速度要快,所以郵件不被檢索?在這種情況下,我不會收到SagaNotFound錯誤消息嗎? – MattB