public ScheduleTaskService(ILogger <ScheduleTaskService> logger,
                            AixScheduleTaskOptions options,
                            IScheduleTaskLifetime scheduleTaskLifetime,
                            IAixScheduleTaskRepository aixScheduleTaskRepository,
                            IAixDistributionLockRepository aixDistributionLockRepository,
                            IScheduleTaskDistributedLock scheduleTaskDistributedLock,
                            IAixScheduleTaskLogRepository aixScheduleTaskLogRepository,
                            MyMultithreadTaskExecutor taskExecutor,
                            ScheduleTaskExecutor scheduleTaskExecutor,
                            ExpireLogExecutor expireLogExecutor,
                            ErrorTaskExecutor errorTaskExecutor
                            )
 {
     _logger  = logger;
     _options = options;
     _scheduleTaskLifetime          = scheduleTaskLifetime;
     PreReadSecond                  = _options.PreReadSecond;
     _aixScheduleTaskRepository     = aixScheduleTaskRepository;
     _aixDistributionLockRepository = aixDistributionLockRepository;
     _scheduleTaskDistributedLock   = scheduleTaskDistributedLock;
     _aixScheduleTaskLogRepository  = aixScheduleTaskLogRepository;
     _taskExecutor                  = taskExecutor;
     _scheduleTaskExecutor          = scheduleTaskExecutor;
     _expireLogExecutor             = expireLogExecutor;
     _errorTaskExecutor             = errorTaskExecutor;
 }
 public ScheduleTaskExecutor(ILogger <ScheduleTaskExecutor> logger,
                             MyMultithreadTaskExecutor taskExecutor,
                             IAixScheduleTaskLogRepository aixScheduleTaskLogRepository,
                             AixScheduleTaskOptions aixScheduleTaskOptions
                             )
 {
     _logger       = logger;
     _taskExecutor = taskExecutor;
     _aixScheduleTaskLogRepository = aixScheduleTaskLogRepository;
     _options = aixScheduleTaskOptions;
 }
        public WorkerProcess(IServiceProvider serviceProvider, string topic, string groupName, string consumerName)
        {
            _serviceProvider = serviceProvider;
            _logger          = _serviceProvider.GetService <ILogger <WorkerProcess> >();
            _options         = _serviceProvider.GetService <RedisMessageBusOptions>();
            _redis           = _serviceProvider.GetService <ConnectionMultiplexer>();
            _database        = _redis.GetDatabase();
            _taskExecutor    = _serviceProvider.GetService <MyMultithreadTaskExecutor>();

            _topic        = topic;
            _groupName    = groupName;
            _consumerName = consumerName;
            _redisStorage = _serviceProvider.GetService <RedisStorage>();

            BatchCount = _options.PerBatchPullCount > 0 ? _options.PerBatchPullCount : 100;
        }
Ejemplo n.º 4
0
 private static void AddAddMultithreadExecutor(this IServiceCollection services, int consumerThreadCount)
 {
     AssertUtils.IsTrue(consumerThreadCount > 0, "RedisMessageBus消费者线程数必须大于0");
     services.AddSingleton(serviceProvider =>
     {
         var logger       = serviceProvider.GetService <ILogger <MyMultithreadTaskExecutor> >();
         var taskExecutor = new MyMultithreadTaskExecutor(options =>
         {
             options.ThreadCount = consumerThreadCount;// Environment.ProcessorCount * 2;
         });
         taskExecutor.OnException += ex =>
         {
             logger.LogError(ex, "RedisMessageBus本地多线程任务执行器执行出错");
             return(Task.CompletedTask);
         };
         taskExecutor.Start();
         logger.LogInformation($"RedisMessageBus本地多线程任务执行器开始 ThreadCount={taskExecutor.ThreadCount}......");
         return(taskExecutor);
     });
 }
Ejemplo n.º 5
0
 private static void AddAddMultithreadExecutor(this IServiceCollection services, int consumerThreadCount)
 {
     if (consumerThreadCount <= 0)
     {
         throw new ArgumentException("Aix.ScheduleTask消费者线程数必须大于0");
     }
     services.AddSingleton(serviceProvider =>
     {
         var logger       = serviceProvider.GetService <ILogger <MyMultithreadTaskExecutor> >();
         var taskExecutor = new MyMultithreadTaskExecutor(options =>
         {
             options.ThreadCount = consumerThreadCount;// Environment.ProcessorCount * 2;
         });
         taskExecutor.OnException += ex =>
         {
             logger.LogError(ex, "Aix.ScheduleTask本地多线程任务执行器执行出错");
             return(Task.CompletedTask);
         };
         taskExecutor.Start();
         logger.LogInformation($"Aix.ScheduleTask本地多线程任务执行器开始 ThreadCount={taskExecutor.ThreadCount}......");
         return(taskExecutor);
     });
 }