[feat] 新增AddAntJob扩展,简化蚂蚁调度的使用
This commit is contained in:
parent
98d4c1114c
commit
931e884876
|
@ -32,7 +32,7 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NewLife.Stardust" Version="3.4.2025.701" />
|
||||
<PackageReference Include="NewLife.Stardust" Version="3.4.2025.713-beta1409" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -11,23 +11,12 @@ var services = ObjectContainer.Current;
|
|||
services.AddStardust();
|
||||
|
||||
var set = AntSetting.Current;
|
||||
services.AddSingleton(set);
|
||||
|
||||
// 实例化调度器
|
||||
var scheduler = new Scheduler
|
||||
{
|
||||
ServiceProvider = services.BuildServiceProvider(),
|
||||
Log = XTrace.Log,
|
||||
};
|
||||
|
||||
scheduler.Join(set);
|
||||
|
||||
// 添加作业处理器
|
||||
//sc.Handlers.Add(new CSharpHandler());
|
||||
scheduler.AddHandler<SqlHandler>();
|
||||
scheduler.AddHandler<SqlMessage>();
|
||||
|
||||
// 启动调度引擎,调度器内部多线程处理
|
||||
scheduler.StartAsync();
|
||||
services.AddAntJob()
|
||||
.AddHandler<SqlHandler>()
|
||||
.AddHandler<SqlMessage>();
|
||||
|
||||
// 友好退出
|
||||
var host = services.BuildHost();
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>netstandard2.1;netstandard2.0;net461;net45</TargetFrameworks>
|
||||
<TargetFrameworks>netstandard2.1;netstandard2.0;net45</TargetFrameworks>
|
||||
<AssemblyTitle>蚂蚁数据调度SDK</AssemblyTitle>
|
||||
<Description>分布式任务调度系统,纯NET打造的重量级大数据实时计算平台,万亿级调度经验积累。</Description>
|
||||
<Company>新生命开发团队</Company>
|
||||
<Copyright>©2002-2025 NewLife</Copyright>
|
||||
<VersionPrefix>4.1</VersionPrefix>
|
||||
<VersionPrefix>4.2</VersionPrefix>
|
||||
<VersionSuffix>$([System.DateTime]::Now.ToString(`yyyy.MMdd`))</VersionSuffix>
|
||||
<Version>$(VersionPrefix).$(VersionSuffix)</Version>
|
||||
<FileVersion>$(Version)</FileVersion>
|
||||
|
@ -45,6 +45,7 @@
|
|||
<ItemGroup>
|
||||
<PackageReference Include="NewLife.XCode" Version="11.19.2025.701" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\AntJob\AntJob.csproj" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -45,8 +45,8 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NewLife.Cube.Core" Version="6.5.2025.701" />
|
||||
<PackageReference Include="NewLife.Remoting.Extensions" Version="3.3.2025.701" />
|
||||
<PackageReference Include="NewLife.Stardust.Extensions" Version="3.4.2025.701" />
|
||||
<PackageReference Include="NewLife.Remoting.Extensions" Version="3.4.2025.713-beta1545" />
|
||||
<PackageReference Include="NewLife.Stardust.Extensions" Version="3.4.2025.713-beta1409" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\AntJob.Data\AntJob.Data.csproj" />
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<Description>分布式任务调度系统,纯NET打造的重量级大数据实时计算平台,万亿级调度经验积累。</Description>
|
||||
<Company>新生命开发团队</Company>
|
||||
<Copyright>©2002-2025 NewLife</Copyright>
|
||||
<VersionPrefix>4.1</VersionPrefix>
|
||||
<VersionPrefix>4.2</VersionPrefix>
|
||||
<VersionSuffix>$([System.DateTime]::Now.ToString(`yyyy.MMdd`))</VersionSuffix>
|
||||
<Version>$(VersionPrefix).$(VersionSuffix)</Version>
|
||||
<FileVersion>$(Version)</FileVersion>
|
||||
|
@ -49,9 +49,9 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NewLife.Core" Version="11.5.2025.701" />
|
||||
<PackageReference Include="NewLife.Remoting" Version="3.3.2025.701" />
|
||||
<PackageReference Include="NewLife.Stardust" Version="3.4.2025.701" />
|
||||
<PackageReference Include="NewLife.Core" Version="11.5.2025.713-beta1307" />
|
||||
<PackageReference Include="NewLife.Remoting" Version="3.4.2025.713-beta1545" />
|
||||
<PackageReference Include="NewLife.Stardust" Version="3.4.2025.713-beta1409" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
using NewLife.Configuration;
|
||||
using NewLife.Log;
|
||||
using NewLife.Model;
|
||||
|
||||
namespace AntJob;
|
||||
|
||||
/// <summary>蚂蚁调度依赖注入</summary>
|
||||
public static class AntJobExtensions
|
||||
{
|
||||
/// <summary>注入AndJob</summary>
|
||||
/// <param name="services"></param>
|
||||
/// <returns></returns>
|
||||
public static Scheduler AddAntJob(this IObjectContainer services)
|
||||
{
|
||||
// 实例化调度器
|
||||
var scheduler = new Scheduler();
|
||||
|
||||
services.AddBasic();
|
||||
services.AddSingleton(scheduler);
|
||||
|
||||
services.AddHostedService<AntJobWorker>();
|
||||
|
||||
return scheduler;
|
||||
}
|
||||
|
||||
static void AddBasic(this IObjectContainer services)
|
||||
{
|
||||
// 注册依赖项
|
||||
services.TryAddSingleton(XTrace.Log);
|
||||
services.TryAddSingleton(DefaultTracer.Instance ??= new DefaultTracer());
|
||||
|
||||
if (!services.Services.Any(e => e.ServiceType == typeof(IConfigProvider)))
|
||||
services.TryAddSingleton<IConfigProvider>(JsonConfigProvider.LoadAppSettings());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
using NewLife;
|
||||
using NewLife.Log;
|
||||
using NewLife.Model;
|
||||
#if !NET45
|
||||
using TaskEx = System.Threading.Tasks.Task;
|
||||
#endif
|
||||
|
||||
namespace AntJob;
|
||||
|
||||
class AntJobWorker(Scheduler scheduler, IServiceProvider serviceProvider) : BackgroundService
|
||||
{
|
||||
protected override Task ExecuteAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
// 实例化调度器
|
||||
scheduler.ServiceProvider = serviceProvider;
|
||||
scheduler.Log = serviceProvider.GetService<ILog>();
|
||||
scheduler.Tracer = serviceProvider.GetService<ITracer>();
|
||||
|
||||
var set = serviceProvider.GetService<AntSetting>();
|
||||
set ??= AntSetting.Current;
|
||||
scheduler.Join(set);
|
||||
|
||||
// 添加作业
|
||||
//scheduler.AddHandler<HelloJob>();
|
||||
|
||||
// 启动调度引擎,调度器内部多线程处理
|
||||
scheduler.StartAsync();
|
||||
|
||||
return TaskEx.CompletedTask;
|
||||
}
|
||||
|
||||
public override Task StopAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
scheduler.TryDispose();
|
||||
scheduler = null;
|
||||
|
||||
return base.StopAsync(cancellationToken);
|
||||
}
|
||||
}
|
|
@ -41,11 +41,16 @@ public class Scheduler : DisposeBase
|
|||
#region 处理器
|
||||
/// <summary>添加处理器</summary>
|
||||
/// <param name="handler"></param>
|
||||
public void AddHandler(Handler handler) => Handlers.Add(handler);
|
||||
public Scheduler AddHandler(Handler handler)
|
||||
{
|
||||
Handlers.Add(handler);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>按类型添加处理器,支持依赖注入</summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
public void AddHandler<T>() where T : Handler
|
||||
public Scheduler AddHandler<T>() where T : Handler
|
||||
{
|
||||
var prv = ServiceProvider;
|
||||
if (prv == null)
|
||||
|
@ -59,6 +64,8 @@ public class Scheduler : DisposeBase
|
|||
var handler = prv.GetService<T>() ?? prv.CreateInstance(typeof(T)) as T;
|
||||
|
||||
Handlers.Add(handler);
|
||||
|
||||
return this;
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
|
||||
<PackageReference Include="NewLife.UnitTest" Version="1.0.2025.101" />
|
||||
<PackageReference Include="xunit" Version="2.9.3" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.1">
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.2">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
|
|
|
@ -9,6 +9,10 @@
|
|||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="JobHost.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\AntJob.Extensions\AntJob.Extensions.csproj" />
|
||||
<ProjectReference Include="..\..\AntJob\AntJob.csproj" />
|
||||
|
|
|
@ -12,9 +12,11 @@ services.AddStardust();
|
|||
|
||||
services.AddSingleton(AntSetting.Current);
|
||||
|
||||
services.AddAntJob()
|
||||
.AddHandler<HelloJob>()
|
||||
.AddHandler<BuildPatient>()
|
||||
.AddHandler<BuildWill>();
|
||||
|
||||
// 友好退出
|
||||
var host = services.BuildHost();
|
||||
|
||||
host.Add<JobHost>();
|
||||
|
||||
await host.RunAsync();
|
Loading…
Reference in New Issue