2012-03-22 43 views
0

我們使用的是RavenDB傳奇存儲,但傳奇數據並沒有在啓動消息處理程序後持續存在。我只能在數據庫中看到少數訂閱文檔。我不確定接下來要檢查什麼。想法?RavenDB Saga Persister不會堅持傳奇實體

我有一個傳奇:

public class BuyerWaitingOnDocumentsDistributor : 
    Saga<BuyerDocumentDistributorData>, 
    IAmStartedByMessages<DocumentVersionRequiresBuyerSignature> 
{ 
    public void Handle(DocumentVersionRequiresEmployeeSignature message) 
    { 
     Data.DocumentVersionId = message.DocumentVersionId.Value; 
     // Business logic goes here 
    } 

    // Other handlers & methods here 
} 

和佐賀實體:

public class BuyerDocumentDistributorData : IContainSagaData 
{ 
    public virtual Guid Id { get; set; } 
    public virtual string Originator { get; set; } 
    public virtual string OriginalMessageId { get; set; } 

    public virtual Guid DocumentVersionId { get; set; } 
    public virtual EmployeeId[] AuthorizedToSign { get; set; } 
} 

和佐賀取景器:

public class BuyerWaitingOnDocumentsDistributorSagaFinder : 
     IFindSagas<BuyerDocumentDistributorData>.Using<DocumentVersionRequiresBuyerSignature>, 
     IFindSagas<BuyerDocumentDistributorData>.Using<DocumentVersionSignedByBuyer>, 
     IFindSagas<BuyerDocumentDistributorData>.Using<DocumentVersionNoLongerRequiresSignature> 
    { 

     private static readonly ILog Log = LogManager.GetLogger(typeof (BuyerWaitingOnDocumentsDistributorSagaFinder)); 

     public ISagaPersister Persister { get; set; } 

     public BuyerDocumentDistributorData FindBy(DocumentVersionRequiresBuyerSignature message) 
     { 
      return Persister.Get<BuyerDocumentDistributorData>("DocumentVersionId", message.DocumentVersionId.Value); 
     } 

     public BuyerDocumentDistributorData FindBy(DocumentVersionSignedByBuyer message) 
     { 
      return Persister.Get<BuyerDocumentDistributorData>("DocumentVersionId", message.DocumentVersionId.Value); 
     } 

     public BuyerDocumentDistributorData FindBy(DocumentVersionNoLongerRequiresSignature message) 
     { 
      return Persister.Get<BuyerDocumentDistributorData>("DocumentVersionId", message.DocumentVersionId.Value); 
     } 
    } 

我還問在NServiceBus雅虎組這個問題:http://tech.groups.yahoo.com/group/nservicebus/message/13265

回答

0

你沒有給你的endpointconfig,所以我不確定你正在使用哪個容器。

我們在使用NinjectBuilder時會遇到同樣的情況(傳奇沒有被持續)。使用DefaultBuilder工作正常。

+0

我切換到Autofac,一切按預期工作。 – 2012-03-23 14:06:35