public IMessageConsumer <TestMessage> CreateConsumer(IMessageSource <TestMessage> messageSource) { var consumer = new MessageConsumer <TestMessage>(messageSource, Scheduler.ThreadPool, new LoggerContextSensitive()) { While = m => TestMessage.IsNotStopMessage(messageSource.Name, m) }; _waiter.Register(consumer); consumer.AddObserver(new AccumulatingObserver(_orderChecker)); return(consumer); }
public IMessageConsumer <MessageEx> CreateConsumer(IMessageSource <MessageEx> messageSource) { if (!_stopwatch.IsRunning) { _stopwatch.Start(); } Interlocked.Increment(ref _childrenCount); var consumer = new MessageConsumer <MessageEx>(messageSource, Scheduler.ThreadPool, _log); consumer.AddObserver(new StopwatchObserver <MessageEx>(_stopwatch, s => _log.Debug(LoggerContext.New(consumer.Name), s), s => _log.Info(LoggerContext.New(consumer.Name), s), e => _log.Error(LoggerContext.New(consumer.Name), string.Empty, e), null, () => Interlocked.Decrement(ref _childrenCount) == 0)); return(consumer); }