public SystemInformationDispatchingService(IAgentCoordinationServiceFactory agentCoordinationServiceFactory, IMessageQueueFeederFactory messageQueueFeederFactory, IMessageQueueWorkerFactory messageQueueWorkerFactory, IMessageQueueProvider <SystemInformation> messageQueueProvider, IMessageQueuePersistence <SystemInformation> messageQueuePersistence) { if (agentCoordinationServiceFactory == null) { throw new ArgumentNullException("agentCoordinationServiceFactory"); } if (messageQueueFeederFactory == null) { throw new ArgumentNullException("messageQueueFeederFactory"); } if (messageQueueWorkerFactory == null) { throw new ArgumentNullException("messageQueueWorkerFactory"); } if (messageQueueProvider == null) { throw new ArgumentNullException("messageQueueProvider"); } if (messageQueuePersistence == null) { throw new ArgumentNullException("messageQueuePersistence"); } this.messageQueueFeeder = messageQueueFeederFactory.GetMessageQueueFeeder(); this.messageQueueWorker = messageQueueWorkerFactory.GetMessageQueueWorker(); this.messageQueueProvider = messageQueueProvider; this.messageQueuePersistence = messageQueuePersistence; this.agentCoordinationService = agentCoordinationServiceFactory.GetAgentCoordinationService( () => this.messageQueueWorker.Pause(), () => this.messageQueueWorker.Resume()); }
public SystemInformationDispatchingService(IAgentCoordinationServiceFactory agentCoordinationServiceFactory, IMessageQueueFeederFactory messageQueueFeederFactory, IMessageQueueWorkerFactory messageQueueWorkerFactory, IMessageQueueProvider<SystemInformation> messageQueueProvider, IMessageQueuePersistence<SystemInformation> messageQueuePersistence) { if (agentCoordinationServiceFactory == null) { throw new ArgumentNullException("agentCoordinationServiceFactory"); } if (messageQueueFeederFactory == null) { throw new ArgumentNullException("messageQueueFeederFactory"); } if (messageQueueWorkerFactory == null) { throw new ArgumentNullException("messageQueueWorkerFactory"); } if (messageQueueProvider == null) { throw new ArgumentNullException("messageQueueProvider"); } if (messageQueuePersistence == null) { throw new ArgumentNullException("messageQueuePersistence"); } this.messageQueueFeeder = messageQueueFeederFactory.GetMessageQueueFeeder(); this.messageQueueWorker = messageQueueWorkerFactory.GetMessageQueueWorker(); this.messageQueueProvider = messageQueueProvider; this.messageQueuePersistence = messageQueuePersistence; this.agentCoordinationService = agentCoordinationServiceFactory.GetAgentCoordinationService( () => this.messageQueueWorker.Pause(), () => this.messageQueueWorker.Resume()); }
/// <summary> /// Зарегистрировать рабочий поток очереди сообщений. /// </summary> /// <param name="queueName">Наименование очереди сообщений.</param> /// <param name="queueWorker">Интерфейс для управления рабочим потоком очереди сообщений.</param> /// <exception cref="ArgumentNullException"></exception> public void RegisterWorker(string queueName, IMessageQueueWorker queueWorker) { ForWorker(queueName, previousQueueWorker => { if (previousQueueWorker != null) { previousQueueWorker.ExecuteSilent(w => w.Stop()); } _queueWorkers[queueName] = queueWorker; }, ifExists: false); }