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(); }
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()); }