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));
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 static void WithLock(CorrelatedBy<Guid> msg, Action callback)
 {
     var locker = _serializer.Get(msg.CorrelationId);
     lock (locker)
     {
         StaThreadHelper.Execute(callback);
     }
 }