RavenDB Saga Persister не существующая сага сущность - PullRequest
0 голосов
/ 22 марта 2012

Мы используем хранилище саг RavenDB, но данные саги не сохраняются после запуска обработчика сообщений. Я вижу только несколько подписных документов в базе данных. Я не уверен, что проверить дальше. Идеи?

У меня есть сага:

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);
        }
    }

Я также задавал этот вопрос в группе Yahoo NServiceBus: http://tech.groups.yahoo.com/group/nservicebus/message/13265

1 Ответ

0 голосов
/ 23 марта 2012

Вы не указали свой endpointconfig, поэтому я не уверен, какой контейнер вы используете.

Мы испытываем то же самое (сага не становится постоянной) при использовании NinjectBuilder. Использование DefaultBuilder работает нормально.

...