Ejemplo n.º 1
0
        ConsumerGroup <T> IConsumerBuilder <T> .CreateConsumers(IBatchConsumer[] barrierConsumers, IBatchHandler <T>[] batchHandlers)
        {
            if (_producerBarrier != null)
            {
                throw new InvalidOperationException("Producer Barrier must be initialised after all consumer barriers.");
            }

            var createdConsumers = new IBatchConsumer[batchHandlers.Length];

            for (int i = 0; i < batchHandlers.Length; i++)
            {
                var batchHandler  = batchHandlers[i];
                var barrier       = new ConsumerBarrier <T>(this, barrierConsumers);
                var batchConsumer = new BatchConsumer <T>(barrier, batchHandler);

                _consumerRepository.Add(batchConsumer, batchHandler);
                createdConsumers[i] = batchConsumer;
            }

            _consumerRepository.UnmarkConsumersAsEndOfChain(barrierConsumers);
            return(new ConsumerGroup <T>(this, createdConsumers));
        }
Ejemplo n.º 2
0
 public SequenceTrackerCallback(BatchConsumer <T> batchConsumer)
 {
     _batchConsumer = batchConsumer;
 }