新架构的作业任务测试通过

This commit is contained in:
大石头 2024-06-24 14:25:32 +08:00
parent 28225811ec
commit 2502d95717
8 changed files with 51 additions and 73 deletions

View File

@ -19,7 +19,7 @@ var scheduler = new Scheduler
Log = XTrace.Log, Log = XTrace.Log,
}; };
scheduler.Join(set.Server, set.AppID, set.Secret, set.Debug); scheduler.Join(set);
// 添加作业处理器 // 添加作业处理器
//sc.Handlers.Add(new CSharpHandler()); //sc.Handlers.Add(new CSharpHandler());

View File

@ -46,7 +46,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="NewLife.Core" Version="10.10.2024.620-beta1127" /> <PackageReference Include="NewLife.Core" Version="10.10.2024.620-beta1127" />
<PackageReference Include="NewLife.Remoting" Version="3.0.2024.624-beta0109" /> <PackageReference Include="NewLife.Remoting" Version="3.0.2024.624" />
<PackageReference Include="NewLife.Stardust" Version="2.9.2024.620-beta1617" /> <PackageReference Include="NewLife.Stardust" Version="2.9.2024.620-beta1617" />
</ItemGroup> </ItemGroup>

View File

@ -20,14 +20,14 @@ public class AntClient : ClientBase
#region #region
/// <summary>实例化</summary> /// <summary>实例化</summary>
public AntClient() => Prefix = "Ant/"; public AntClient() => Prefix = "";
/// <summary>实例化</summary> /// <summary>实例化</summary>
/// <param name="setting"></param> /// <param name="setting"></param>
public AntClient(AntSetting setting) : base(setting) public AntClient(AntSetting setting) : base(setting)
{ {
_setting = setting; _setting = setting;
Prefix = _setting.Server.StartsWithIgnoreCase("http://", "https://") ? "AntJob/" : "Ant/"; Prefix = _setting.Server.StartsWithIgnoreCase("http://", "https://") ? "AntJob/" : "";
} }
#endregion #endregion
@ -49,7 +49,7 @@ public class AntClient : ClientBase
//container.TryAddTransient<IUpgradeInfo, UpgradeInfo>(); //container.TryAddTransient<IUpgradeInfo, UpgradeInfo>();
} }
Prefix = _setting.Server.StartsWithIgnoreCase("http://", "https://") ? "AntJob/" : "Ant/"; Prefix = _setting.Server.StartsWithIgnoreCase("http://", "https://") ? "AntJob/" : "";
base.OnInit(); base.OnInit();
} }

View File

@ -54,13 +54,12 @@ public class Scheduler : DisposeBase
#region #region
/// <summary>加入调度中心从注册中心获取地址自动识别RPC/Http</summary> /// <summary>加入调度中心从注册中心获取地址自动识别RPC/Http</summary>
/// <param name="server"></param> /// <param name="set"></param>
/// <param name="appId"></param>
/// <param name="secret"></param>
/// <param name="debug"></param>
/// <returns></returns> /// <returns></returns>
public IJobProvider Join(String server, String appId, String secret, Boolean debug = false) public IJobProvider Join(AntSetting set)
{ {
var server = set.Server;
var registry = ServiceProvider?.GetService<IRegistry>(); var registry = ServiceProvider?.GetService<IRegistry>();
if (registry != null) if (registry != null)
{ {
@ -69,31 +68,31 @@ public class Scheduler : DisposeBase
} }
if (server.IsNullOrEmpty()) return null; if (server.IsNullOrEmpty()) return null;
set.Server = server;
// 根据地址决定用Http还是RPC // 根据地址决定用Http还是RPC
var servers = server.Split(","); var servers = server.Split(",");
if (servers.Any(e => e.StartsWithIgnoreCase("http://", "https://"))) //if (servers.Any(e => e.StartsWithIgnoreCase("http://", "https://")))
{ //{
var http = new HttpJobProvider // var http = new HttpJobProvider
{ // {
Debug = debug, // Debug = debug,
Server = server, // Server = server,
AppId = appId, // AppId = appId,
Secret = secret, // Secret = secret,
}; // };
// 如果有注册中心,则使用注册中心的服务发现 // // 如果有注册中心,则使用注册中心的服务发现
if (registry != null) // if (registry != null)
{ // {
//http.Client = registry.CreateForService("AntServer") as ApiHttpClient; // //http.Client = registry.CreateForService("AntServer") as ApiHttpClient;
//http.Client.RoundRobin = false; // //http.Client.RoundRobin = false;
} // }
Provider = http; // Provider = http;
} //}
else //else
{ {
var set = AntSetting.Current;
var rpc = new NetworkJobProvider(set); var rpc = new NetworkJobProvider(set);
Provider = rpc; Provider = rpc;

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
@ -9,10 +9,6 @@
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<PackageReference Include="NewLife.Stardust.Extensions" Version="2.9.2024.422-beta0942" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\AntJob.Extensions\AntJob.Extensions.csproj" /> <ProjectReference Include="..\..\AntJob.Extensions\AntJob.Extensions.csproj" />
<ProjectReference Include="..\..\AntJob\AntJob.csproj" /> <ProjectReference Include="..\..\AntJob\AntJob.csproj" />

View File

@ -2,9 +2,9 @@
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using AntJob; using AntJob;
using Microsoft.Extensions.Hosting;
using NewLife; using NewLife;
using NewLife.Log; using NewLife.Log;
using NewLife.Model;
namespace HisAgent; namespace HisAgent;
@ -12,13 +12,16 @@ public class JobHost : BackgroundService
{ {
private Scheduler _scheduler; private Scheduler _scheduler;
private readonly IServiceProvider _serviceProvider; private readonly IServiceProvider _serviceProvider;
private readonly AntSetting _setting;
public JobHost(IServiceProvider serviceProvider) => _serviceProvider = serviceProvider; public JobHost(IServiceProvider serviceProvider, AntSetting setting)
{
_serviceProvider = serviceProvider;
_setting = setting;
}
protected override Task ExecuteAsync(CancellationToken stoppingToken) protected override Task ExecuteAsync(CancellationToken stoppingToken)
{ {
var set = AntSetting.Current;
// 实例化调度器 // 实例化调度器
var scheduler = new Scheduler var scheduler = new Scheduler
{ {
@ -26,7 +29,7 @@ public class JobHost : BackgroundService
Log = XTrace.Log, Log = XTrace.Log,
}; };
scheduler.Join(set.Server, set.AppID, set.Secret, set.Debug); scheduler.Join(_setting);
// 添加作业 // 添加作业
scheduler.AddHandler<HelloJob>(); scheduler.AddHandler<HelloJob>();

View File

@ -1,33 +1,20 @@
using Microsoft.Extensions.DependencyInjection; using AntJob;
using Microsoft.Extensions.Hosting; using HisAgent;
using NewLife.Log; using NewLife.Log;
using NewLife.Model;
using Stardust;
namespace HisAgent; // 启用控制台日志,拦截所有异常
class Program
{
static void Main(string[] args)
{
XTrace.UseConsole(); XTrace.UseConsole();
CreateHostBuilder(args).Build().Run(); var services = ObjectContainer.Current;
}
/// <summary></summary>
/// <param name="args"></param>
/// <returns></returns>
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) => ConfigureServices(services));
/// <summary></summary>
/// <param name="hostBuilderContext"></param>
/// <param name="services"></param>
public static void ConfigureServices(IServiceCollection services)
{
services.AddStardust(); services.AddStardust();
// 添加后台调度服务 services.AddSingleton(AntSetting.Current);
services.AddHostedService<JobHost>();
} // 友好退出
} var host = services.BuildHost();
host.Add<JobHost>();
await host.RunAsync();

View File

@ -5,6 +5,7 @@ VisualStudioVersion = 17.1.32328.378
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Others", "Others", "{0EA980BB-BB15-41A3-B75B-537BC42E985B}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Others", "Others", "{0EA980BB-BB15-41A3-B75B-537BC42E985B}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
.github\workflows\publish-beta.yml = .github\workflows\publish-beta.yml .github\workflows\publish-beta.yml = .github\workflows\publish-beta.yml
.github\workflows\publish.yml = .github\workflows\publish.yml .github\workflows\publish.yml = .github\workflows\publish.yml
Readme.MD = Readme.MD Readme.MD = Readme.MD
@ -25,11 +26,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AntJob.Extensions", "AntJob
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{E842807F-C45E-44DA-8AAE-7915C1EBF2A2}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{E842807F-C45E-44DA-8AAE-7915C1EBF2A2}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A1EF271C-AEA8-4EA3-A76F-906B4D4A9058}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AntJob.Agent", "AntJob.Agent\AntJob.Agent.csproj", "{0970FDBA-2331-4600-8DD5-A37B41AF989F}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AntJob.Agent", "AntJob.Agent\AntJob.Agent.csproj", "{0970FDBA-2331-4600-8DD5-A37B41AF989F}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HisAgent", "Samples\HisAgent\HisAgent.csproj", "{E62006DC-E61B-42B0-A06B-ED5BF3F73D9E}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HisAgent", "Samples\HisAgent\HisAgent.csproj", "{E62006DC-E61B-42B0-A06B-ED5BF3F73D9E}"
@ -38,8 +34,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HisData", "Samples\HisData\
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HisWeb", "Samples\HisWeb\HisWeb.csproj", "{153499A6-E73C-4C5A-8867-D29BD586A74B}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HisWeb", "Samples\HisWeb\HisWeb.csproj", "{153499A6-E73C-4C5A-8867-D29BD586A74B}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UnitTest", "UnitTest", "{26660D0A-8724-4434-88D1-5EE861A68309}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AntTest", "AntTest\AntTest.csproj", "{A13E58D2-A185-4945-98B7-B6B0951A19D2}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AntTest", "AntTest\AntTest.csproj", "{A13E58D2-A185-4945-98B7-B6B0951A19D2}"
EndProject EndProject
Global Global
@ -100,7 +94,6 @@ Global
{E62006DC-E61B-42B0-A06B-ED5BF3F73D9E} = {E842807F-C45E-44DA-8AAE-7915C1EBF2A2} {E62006DC-E61B-42B0-A06B-ED5BF3F73D9E} = {E842807F-C45E-44DA-8AAE-7915C1EBF2A2}
{38F8667D-70B7-4A90-8CA7-63738E925DFF} = {E842807F-C45E-44DA-8AAE-7915C1EBF2A2} {38F8667D-70B7-4A90-8CA7-63738E925DFF} = {E842807F-C45E-44DA-8AAE-7915C1EBF2A2}
{153499A6-E73C-4C5A-8867-D29BD586A74B} = {E842807F-C45E-44DA-8AAE-7915C1EBF2A2} {153499A6-E73C-4C5A-8867-D29BD586A74B} = {E842807F-C45E-44DA-8AAE-7915C1EBF2A2}
{A13E58D2-A185-4945-98B7-B6B0951A19D2} = {26660D0A-8724-4434-88D1-5EE861A68309}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9337283C-C795-479F-A2F1-C892EBE2490C} SolutionGuid = {9337283C-C795-479F-A2F1-C892EBE2490C}