예제 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ConsumerQueueAsync" /> class.
        /// </summary>
        /// <param name="configuration">The configuration.</param>
        /// <param name="workerFactory">The worker factory.</param>
        /// <param name="log">The log.</param>
        /// <param name="registerMessagesAsync">The register messages asynchronous.</param>
        /// <param name="stopWorker">The stop worker.</param>
        /// <param name="queueMonitor">The queue monitor.</param>
        public ConsumerQueueAsync(
            QueueConsumerConfiguration configuration,
            IPrimaryWorkerFactory workerFactory,
            ILogger log,
            IRegisterMessagesAsync registerMessagesAsync,
            StopWorker stopWorker,
            IQueueMonitor queueMonitor)
            : base(log)
        {
            Guard.NotNull(() => configuration, configuration);
            Guard.NotNull(() => workerFactory, workerFactory);
            Guard.NotNull(() => log, log);
            Guard.NotNull(() => registerMessagesAsync, registerMessagesAsync);
            Guard.NotNull(() => stopWorker, stopWorker);
            Guard.NotNull(() => queueMonitor, queueMonitor);

            _configuration = configuration;
            _primaryWorker = new Lazy <IPrimaryWorker>(() =>
            {
                var worker              = workerFactory.Create();
                worker.UserException   += LogUserException;
                worker.SystemException += LogSystemException;
                return(worker);
            });

            _stopWorker            = stopWorker;
            _queueMonitor          = queueMonitor;
            _registerMessagesAsync = registerMessagesAsync;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="MessageProcessingMode"/> class.
 /// </summary>
 /// <param name="registerMessagesAsync">The register messages asynchronous.</param>
 public MessageProcessingMode(IRegisterMessagesAsync registerMessagesAsync)
 {
     _registerMessagesAsync = registerMessagesAsync;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="MessageProcessingMode"/> class.
 /// </summary>
 /// <param name="registerMessagesAsync">The register messages asynchronous.</param>
 public MessageProcessingMode(IRegisterMessagesAsync registerMessagesAsync)
 {
     _registerMessagesAsync = registerMessagesAsync;
 }