【问题标题】:RavenDB Saga Persister not persisting saga entityRavenDB Saga Persister 不持久化 saga 实体
【发布时间】:2012-03-22 18:32:56
【问题描述】:

我们正在使用 RavenDB saga 存储,但在启动消息处理程序之后,saga 数据没有被持久化。我在数据库中只看到少数订阅文档。我不确定接下来要检查什么。想法?

我有一个传奇:

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

【问题讨论】:

    标签: nservicebus ravendb


    【解决方案1】:

    您没有提供端点配置,所以我不确定您使用的是哪个容器。

    在使用 NinjectBuilder 时,我们会遇到同样的情况(传奇不会持续存在)。使用 DefaultBuilder 工作正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 2015-04-08
      相关资源
      最近更新 更多