public static IEnumerable <TSaga> ByCorrelationId <TSaga>( this ISagaRepository <TSaga> repository, CorrelatedBy <Guid> correlationImplementation) where TSaga : class, ISaga { if (repository == null) { throw new ArgumentNullException("repository"); } return(repository.Where(s => s.CorrelationId == correlationImplementation.CorrelationId)); }
public static CorrelatedMessageGroup <TKey> CombineWith <TMessage, TKey>(this CorrelatedBy <TKey> message, params TMessage[] messages) where TMessage : CorrelatedBy <TKey> { var group = new CorrelatedMessageGroup <TKey> { message }; group.AddRange(messages); return(group); }
static void WithLock(CorrelatedBy<Guid> msg, Action callback) { var locker = _serializer.Get(msg.CorrelationId); lock (locker) { StaThreadHelper.Execute(callback); } }