xxl-job的dotnet core 执行器实现
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

52 lines
2.0 KiB

using System;
using DotXxlJob.Core.Config;
using DotXxlJob.Core.DefaultHandlers;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace DotXxlJob.Core
{
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddXxlJobExecutor(this IServiceCollection services,IConfiguration configuration)
{
services.AddLogging();
services.AddOptions();
services.Configure<XxlJobExecutorOptions>(configuration.GetSection("xxlJob"))
.AddXxlJobExecutorServiceDependency();
return services;
}
public static IServiceCollection AddXxlJobExecutor(this IServiceCollection services,Action<XxlJobExecutorOptions> configAction)
{
services.AddLogging();
services.AddOptions();
services.Configure(configAction).AddXxlJobExecutorServiceDependency();
return services;
}
public static IServiceCollection AddDefaultXxlJobHandlers(this IServiceCollection services)
{
services.AddSingleton<IJobHandler,HttpJobHandler >();
return services;
}
private static IServiceCollection AddXxlJobExecutorServiceDependency(this IServiceCollection services)
{
services.AddHttpClient("DotXxlJobClient");
services.AddSingleton<IJobLogger, JobLogger>();
services.AddSingleton<ITaskExecutor, TaskExecutors.BeanTaskExecutor>();
services.AddSingleton<IJobHandlerFactory,DefaultJobHandlerFactory >();
services.AddSingleton<JobDispatcher>();
services.AddSingleton<TaskExecutorFactory>();
services.AddSingleton<XxlRpcServiceHandler>();
services.AddSingleton<CallbackTaskQueue>();
services.AddSingleton<AdminClient>();
services.AddSingleton<IExecutorRegistry, ExecutorRegistry>();
return services;
}
}
}