Exemple #1
0
 public WritableQueueProcessorNode(
     ILogger logger,
     IReadQueue <TRequestType> requestQueue,
     IGenericFactory <IMessageProcessingLogic <TRequestType> > logicFactory,
     IWriteQueueFactory <TRequestType> writeQueueFactory)
     : base(requestQueue, logicFactory)
 {
     this.writeQueueFactory = writeQueueFactory;
     this.WriteQueue        = this.writeQueueFactory.Create();
 }
Exemple #2
0
        public QueueProcessor(
            ILogger logger,
            IGenericFactory <IMessageProcessingLogic <TRequestType> > logicFactory,
            IQueueProcessorNodeFactory <TRequestType> queueProcessorNodeFactory,
            IReadQueueFactory <TRequestType> readQueueFactory,
            IWriteQueueFactory <TRequestType> writeQueueFactory,
            MessageProcessingMode messageProcessingMode = MessageProcessingMode.LocalChildNodeConcurrent,
            int numWorkers = 1)
        {
            if (numWorkers < 1)
            {
                throw new InvalidProgramException(
                          string.Format(
                              "Queue Processor [{0}] has in invalid number of workers specified [{1}], minumum is 1",
                              this,
                              numWorkers));
            }

            this.logger       = logger;
            this.logicFactory = logicFactory;
            this.queueProcessorNodeFactory = queueProcessorNodeFactory;
            this.readQueueFactory          = readQueueFactory;
            this.writeQueueFactory         = writeQueueFactory;
            this.messageProcessingMode     = messageProcessingMode;

            this.logger.InfoFormat("[{0}] creating [{1}] processor nodes...", this.ToString(), numWorkers);
            this.processorNodes = new List <IQueueProcessorNode <TRequestType> >(numWorkers);

            switch (this.messageProcessingMode)
            {
            case MessageProcessingMode.LocalChildNodeConcurrent:
            {
                for (var i = 0; i < numWorkers; i++)
                {
                    this.processorNodes.Add(this.CreateProcessorNode());
                }

                break;
            }
            }

            this.logger.InfoFormat("Created Queue Processor [{0}].", this.ToString());
        }