Pull to refresh

Comments 8

UFO just landed and posted this here

А коррелировать не по Id, а по, скажем, диапазону времени саги умеют? Допустим, если бывает необходимость скоррелировать событие с сагой, которое произошло в определенном пятиминутном диапазоне?

Скорее всего, да, только надо использовать для корелляции ивента не CorrelateById, а CorrelateBy.


/// <summary>Speicyf the correlation expression for the event</summary>
    /// <param name="correlationExpression"></param>
    /// <returns></returns>
    EventCorrelationConfigurator<TInstance, TData> CorrelateBy(Expression<Func<TInstance, ConsumeContext<TData>, bool>> correlationExpression);

А данные саги хранятся в базе данных или в оперативке?

Когда-то тоже была такая задача, выбрал Akka.net и её персистентных акторов.


В основном потому что язык создания стейт машин для масс транзита показался уж слишком неудобным

Так как все манипуляции с данными мы делаем в той же транзакции, что и Saga, транзакция не будет закрыта.

Стоит уточнить, что не стоит сохранять что-то в БД из обработчика сообщения в стейт-машине, иначе, может получиться так, что эти данные уже в БД, а само состояние саги не сохранилось.

лучше добавить в контракт имя очереди для ответа, чем использовать схему Request/Response от MassTransit, которую и сам MassTransit предлагает избегать. Так как это сильно уменьшает надежность. Вы теряете все преимущества асинхронности

… но это не относится к Request`ам, отправленным из саги. Ожидание ответа реализовано просто еще одним состояним стейт-машины.
Sign up to leave a comment.