完善任务调度

This commit is contained in:
橙子
2021-11-03 18:14:44 +08:00
parent 7b994240d0
commit a32ef06c0a
11 changed files with 83 additions and 15 deletions

View File

@@ -45,7 +45,12 @@ namespace Yi.Framework.ApiMicroservice.Controllers
return new FileStreamResult(stream, MimeType); return new FileStreamResult(stream, MimeType);
} }
/// <summary>
/// 该方法不对外暴露
/// </summary>
/// <param name="type"></param>
/// <param name="file"></param>
/// <returns></returns>
private async Task<string> Upload(string type,IFormFile file) private async Task<string> Upload(string type,IFormFile file)
{ {
@@ -57,6 +62,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
return filename; return filename;
} }
[HttpGet] [HttpGet]
public async Task<IActionResult>ExportFile() public async Task<IActionResult>ExportFile()
{ {

View File

@@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Yi.Framework.Common; using Yi.Framework.Common;
using Yi.Framework.Common.Const;
using Yi.Framework.Common.Helper; using Yi.Framework.Common.Helper;
using Yi.Framework.Common.Models; using Yi.Framework.Common.Models;
using Yi.Framework.Core; using Yi.Framework.Core;
@@ -30,7 +31,16 @@ namespace Yi.Framework.ApiMicroservice.Controllers
[HttpPost] [HttpPost]
public async Task<Result> startJob() public async Task<Result> startJob()
{ {
await _quartzInvoker.start("*/1 * * * * ? ", new Quartz.JobKey("test", "my"), "VisitJob"); //任务1
//await _quartzInvoker.start("*/1 * * * * ? ", new Quartz.JobKey("test", "my"), "VisitJob");
//任务2
Dictionary<string, object> data = new Dictionary<string, object>()
{
{JobConst.method,"get" },
{JobConst.url,"https://www.baidu.com" }
};
await _quartzInvoker.start("*/1 * * * * ? ", new Quartz.JobKey("test", "my"), "HttpJob",data: data);
return Result.Success(); return Result.Success();
} }

View File

@@ -146,11 +146,24 @@
<param name="idsListDto"></param> <param name="idsListDto"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Yi.Framework.ApiMicroservice.Controllers.RoleController.GetTopMenusByRoleId(Yi.Framework.Model.Models.role)"> <member name="M:Yi.Framework.ApiMicroservice.Controllers.RoleController.GetTopMenusByRoleId(System.Int32)">
<summary> <summary>
用于给角色设置菜单的时候,点击一个角色,显示这个角色拥有的并列的菜单 用于给角色设置菜单的时候,点击一个角色,显示这个角色拥有的并列的菜单
</summary> </summary>
<param name="role"></param> <param name="roleId"></param>
<returns></returns>
</member>
<member name="M:Yi.Framework.ApiMicroservice.Controllers.SettingController.GetSetting">
<summary>
</summary>
<returns></returns>
</member>
<member name="M:Yi.Framework.ApiMicroservice.Controllers.SettingController.UpdateSetting">
<summary>
</summary>
<param name="_Setting"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Yi.Framework.ApiMicroservice.Controllers.UserController.GetUser"> <member name="M:Yi.Framework.ApiMicroservice.Controllers.UserController.GetUser">

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Yi.Framework.Common.Const
{
public class JobConst
{
public const string url = nameof(url);
public const string method = nameof(method);
}
}

View File

@@ -13,7 +13,8 @@ namespace Yi.Framework.Common.Helper
{ {
Assembly assembly = Assembly.Load(assemblyFile); Assembly assembly = Assembly.Load(assemblyFile);
return assembly.GetTypes().Where(m => m.IsClass return assembly.GetTypes().Where(m => m.IsClass
&& m.Name==null?true:m.Name==className && className == null?true:m.Name==className
&& spaceName == null ? true :m.Namespace == spaceName
).ToList(); ).ToList();
} }

View File

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace Yi.Framework.Common.Models namespace Yi.Framework.Common.Models
{ {
public class visitModel public class JobModel
{ {
public static int visitNum { get; set; } = 0; public static int visitNum { get; set; } = 0;
} }

View File

@@ -34,8 +34,13 @@ namespace Yi.Framework.Core
/// <param name="second"></param> /// <param name="second"></param>
/// <param name="data"></param> /// <param name="data"></param>
/// <returns></returns> /// <returns></returns>
public async Task start(string cron, JobKey jobKey, string jobClass, long second = 0) public async Task start(string cron, JobKey jobKey, string jobClass, long second = 0, IDictionary<string, object> data = null)
{ {
if (data == null)
{
data = new Dictionary<string, object>();
}
var myClass = AssemblyHelper.GetClass("Yi.Framework.Job", jobClass).FirstOrDefault(); var myClass = AssemblyHelper.GetClass("Yi.Framework.Job", jobClass).FirstOrDefault();
_scheduler = await _schedulerFactory.GetScheduler(); _scheduler = await _schedulerFactory.GetScheduler();
@@ -49,6 +54,7 @@ namespace Yi.Framework.Core
.Build(); .Build();
//创建任务 //创建任务
var jobDetail = JobBuilder.Create(myClass) var jobDetail = JobBuilder.Create(myClass)
.UsingJobData(new JobDataMap(data))
.WithIdentity(jobKey.Name, jobKey.Group) .WithIdentity(jobKey.Name, jobKey.Group)
.Build(); .Build();
//将触发器和任务器绑定到调度器中 //将触发器和任务器绑定到调度器中

View File

@@ -5,13 +5,14 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Yi.Framework.Common.Models;
namespace Yi.Framework.Job namespace Yi.Framework.Job
{ {
public class HttpJob : IJob public class HttpJob : IJob
{ {
private ILogger<VisitJob> _logger; private ILogger<HttpJob> _logger;
public HttpJob(ILogger<VisitJob> logger) public HttpJob(ILogger<HttpJob> logger)
{ {
_logger = logger; _logger = logger;
} }
@@ -20,7 +21,23 @@ namespace Yi.Framework.Job
{ {
return Task.Run(() => return Task.Run(() =>
{ {
var jobData = context.JobDetail.JobDataMap;
string method= jobData[Common.Const.JobConst.method].ToString();
string url = jobData[Common.Const.JobConst.url].ToString();
string data="异常!";
switch (method)
{
case "post":
data = Common.Helper.HttpHelper.HttpPost(url);
break;
case "get":
data = Common.Helper.HttpHelper.HttpGet(url);
break;
}
_logger.LogWarning("定时任务开始调度:" + nameof(HttpJob) + ":" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + $":访问地址为:{url},结果为:{data}");
Console.WriteLine($"结果:{data}");
}); });
} }
} }

View File

@@ -31,13 +31,11 @@ namespace Yi.Framework.Job
{ {
return Task.Run(() => return Task.Run(() =>
{ {
_DBWrite.Set<visit>().Add(new visit() { num = JobModel.visitNum, time = DateTime.Now });
_DBWrite.Set<visit>().Add(new visit() { num = visitModel.visitNum, time = DateTime.Now });
_DBWrite.SaveChanges(); _DBWrite.SaveChanges();
_logger.LogWarning("定时任务开始调度:" + nameof(VisitJob) + ":" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + $":访问总数为:{visitModel.visitNum}"); _logger.LogWarning("定时任务开始调度:" + nameof(VisitJob) + ":" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + $":访问总数为:{JobModel.visitNum}");
visitModel.visitNum = 0; JobModel.visitNum = 0;
} }
); );
} }
} }