首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RavenDB Saga持久化不持久化saga实体

RavenDB Saga持久化不持久化saga实体
EN

Stack Overflow用户
提问于 2012-03-23 02:32:57
回答 1查看 395关注 0票数 0

我们使用的是RavenDB saga存储,但是saga数据在启动消息处理程序之后不会被持久化。我在数据库里只看到一小部分订阅文档。我不确定下一步该检查什么。想法?

我有一个传奇故事:

代码语言:javascript
复制
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
}

和saga实体:

代码语言:javascript
复制
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; }
}

和saga finder:

代码语言:javascript
复制
    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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-23 20:27:47

您没有给出endpointconfig,所以我不确定您使用的是哪个容器。

我们在使用NinjectBuilder时也遇到了同样的情况(传奇不会持久)。使用DefaultBuilder可以正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9828377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档