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