Example #1
0
        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);
        }