mirror of
https://github.com/anjoy8/Blog.Core.git
synced 2024-09-20 23:48:27 +08:00
continue in task
This commit is contained in:
parent
2c012922ad
commit
2225c05488
|
@ -1,7 +1,10 @@
|
|||
using Blog.Core.Tasks;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Quartz;
|
||||
using Quartz.Spi;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Blog.Core.Extensions
|
||||
{
|
||||
|
@ -18,9 +21,22 @@ namespace Blog.Core.Extensions
|
|||
//services.AddHostedService<Job2TimedService>();
|
||||
|
||||
services.AddSingleton<IJobFactory, JobFactory>();
|
||||
services.AddTransient<Job_Blogs_Quartz>();//Job使用瞬时依赖注入
|
||||
services.AddTransient<Job_OperateLog_Quartz>();//Job使用瞬时依赖注入
|
||||
//services.AddTransient<Job_Blogs_Quartz>();//Job使用瞬时依赖注入
|
||||
//services.AddTransient<Job_OperateLog_Quartz>();//Job使用瞬时依赖注入
|
||||
services.AddSingleton<ISchedulerCenter, SchedulerCenterServer>();
|
||||
//任务注入
|
||||
var baseType = typeof(IJob);
|
||||
var path = AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory;
|
||||
var referencedAssemblies = System.IO.Directory.GetFiles(path, "Blog.Core.Tasks.dll").Select(Assembly.LoadFrom).ToArray();
|
||||
var types = referencedAssemblies
|
||||
.SelectMany(a => a.DefinedTypes)
|
||||
.Select(type => type.AsType())
|
||||
.Where(x => x != baseType && baseType.IsAssignableFrom(x)).ToArray();
|
||||
var implementTypes = types.Where(x => x.IsClass).ToArray();
|
||||
foreach (var implementType in implementTypes)
|
||||
{
|
||||
services.AddTransient(implementType);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,11 +9,7 @@ namespace Blog.Core.Tasks
|
|||
{
|
||||
public class JobBase
|
||||
{
|
||||
public readonly ITasksQzServices _tasksQzServices;
|
||||
public JobBase(ITasksQzServices tasksQzServices)
|
||||
{
|
||||
_tasksQzServices = tasksQzServices;
|
||||
}
|
||||
public ITasksQzServices _tasksQzServices;
|
||||
/// <summary>
|
||||
/// 执行指定任务
|
||||
/// </summary>
|
||||
|
@ -43,22 +39,23 @@ namespace Blog.Core.Tasks
|
|||
JobExecutionException e2 = new JobExecutionException(ex);
|
||||
//true 是立即重新执行任务
|
||||
e2.RefireImmediately = true;
|
||||
//SerilogServer.WriteErrorLog(context.Trigger.Key.Name.Replace("-", ""), $"{context.Trigger.Key.Name}任务运行异常", ex);
|
||||
|
||||
jobHistory += $",【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行失败:{ex.Message}】";
|
||||
}
|
||||
finally
|
||||
{
|
||||
taskSeconds = Math.Round(stopwatch.Elapsed.TotalSeconds, 3);
|
||||
jobHistory += $",【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行结束】(耗时:{taskSeconds}秒)";
|
||||
var model = await _tasksQzServices.QueryById(jobid);
|
||||
if (model != null)
|
||||
if(_tasksQzServices!=null)
|
||||
{
|
||||
model.RunTimes += 1;
|
||||
var separator = "<br>";
|
||||
model.Remark =
|
||||
$"{jobHistory}{separator}" + string.Join(separator, StringHelper.GetTopDataBySeparator(model.Remark, separator, 9));
|
||||
await _tasksQzServices.Update(model);
|
||||
var model = await _tasksQzServices.QueryById(jobid);
|
||||
if (model != null)
|
||||
{
|
||||
model.RunTimes += 1;
|
||||
var separator = "<br>";
|
||||
model.Remark =
|
||||
$"{jobHistory}{separator}" + string.Join(separator, StringHelper.GetTopDataBySeparator(model.Remark, separator, 9));
|
||||
await _tasksQzServices.Update(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
using Blog.Core.Common.Helper;
|
||||
using Blog.Core.IServices;
|
||||
using Blog.Core.IServices;
|
||||
using Quartz;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
/// <summary>
|
||||
|
@ -13,32 +11,14 @@ namespace Blog.Core.Tasks
|
|||
{
|
||||
private readonly IBlogArticleServices _blogArticleServices;
|
||||
|
||||
public Job_Blogs_Quartz(IBlogArticleServices blogArticleServices, ITasksQzServices tasksQzServices) : base(tasksQzServices)
|
||||
public Job_Blogs_Quartz(IBlogArticleServices blogArticleServices, ITasksQzServices tasksQzServices)
|
||||
{
|
||||
_blogArticleServices = blogArticleServices;
|
||||
_tasksQzServices = tasksQzServices;
|
||||
}
|
||||
public async Task Execute(IJobExecutionContext context)
|
||||
{
|
||||
|
||||
//var param = context.MergedJobDataMap;
|
||||
// 可以直接获取 JobDetail 的值
|
||||
var jobKey = context.JobDetail.Key;
|
||||
var jobId = jobKey.Name;
|
||||
|
||||
var executeLog = await ExecuteJob(context, async () => await Run(context));
|
||||
|
||||
// 也可以通过数据库配置,获取传递过来的参数
|
||||
JobDataMap data = context.JobDetail.JobDataMap;
|
||||
//int jobId = data.GetInt("JobParam");
|
||||
|
||||
//var model = await _tasksQzServices.QueryById(jobId);
|
||||
//if (model != null)
|
||||
//{
|
||||
// model.RunTimes += 1;
|
||||
// model.Remark += $"{executeLog}<br />";
|
||||
// await _tasksQzServices.Update(model);
|
||||
//}
|
||||
|
||||
}
|
||||
public async Task Run(IJobExecutionContext context)
|
||||
{
|
||||
|
@ -47,27 +27,5 @@ namespace Blog.Core.Tasks
|
|||
JobDataMap data = context.JobDetail.JobDataMap;
|
||||
//int jobId = data.GetInt("JobParam");
|
||||
}
|
||||
|
||||
public async Task Run(IJobExecutionContext context, int jobid)
|
||||
{
|
||||
var list = await _blogArticleServices.Query();
|
||||
|
||||
if (jobid > 0)
|
||||
{
|
||||
var model = await _tasksQzServices.QueryById(jobid);
|
||||
if (model != null)
|
||||
{
|
||||
model.RunTimes += 1;
|
||||
var separator = "<br>";
|
||||
model.Remark =
|
||||
$"【{DateTime.Now}】执行任务【Id:{context.JobDetail.Key.Name},组别:{context.JobDetail.Key.Group}】【执行成功】:博客数{list.Count}{separator}"
|
||||
+ string.Join(separator, StringHelper.GetTopDataBySeparator(model.Remark, separator, 9));
|
||||
|
||||
await _tasksQzServices.Update(model);
|
||||
}
|
||||
}
|
||||
|
||||
await Console.Out.WriteLineAsync("博客总数量" + list.Count.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using Blog.Core.Common.Helper;
|
||||
using Blog.Core.Common.LogHelper;
|
||||
using Blog.Core.Common.LogHelper;
|
||||
using Blog.Core.IServices;
|
||||
using Blog.Core.Model.Models;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
|
@ -21,24 +20,25 @@ namespace Blog.Core.Tasks
|
|||
private readonly IOperateLogServices _operateLogServices;
|
||||
private readonly IWebHostEnvironment _environment;
|
||||
|
||||
public Job_OperateLog_Quartz(IOperateLogServices operateLogServices, ITasksQzServices tasksQzServices, IWebHostEnvironment environment) : base(tasksQzServices)
|
||||
public Job_OperateLog_Quartz(IOperateLogServices operateLogServices, ITasksQzServices tasksQzServices, IWebHostEnvironment environment)
|
||||
{
|
||||
_operateLogServices = operateLogServices;
|
||||
_environment = environment;
|
||||
_tasksQzServices = tasksQzServices;
|
||||
}
|
||||
public async Task Execute(IJobExecutionContext context)
|
||||
{
|
||||
var executeLog = await ExecuteJob(context, async () => await Run(context));
|
||||
}
|
||||
public async Task Run(IJobExecutionContext context)
|
||||
{
|
||||
|
||||
// 可以直接获取 JobDetail 的值
|
||||
var jobKey = context.JobDetail.Key;
|
||||
var jobId = jobKey.Name;
|
||||
|
||||
var executeLog = await ExecuteJob(context, async () => await Run(context, jobId.ObjToInt()));
|
||||
|
||||
// 也可以通过数据库配置,获取传递过来的参数
|
||||
JobDataMap data = context.JobDetail.JobDataMap;
|
||||
}
|
||||
public async Task Run(IJobExecutionContext context, int jobid)
|
||||
{
|
||||
|
||||
List<LogInfo> excLogs = new List<LogInfo>();
|
||||
var exclogContent = LogLock.ReadLog(Path.Combine(_environment.ContentRootPath, "Log"), $"GlobalExceptionLogs_{DateTime.Now.ToString("yyyMMdd")}.log", Encoding.UTF8);
|
||||
|
||||
|
@ -76,22 +76,6 @@ namespace Blog.Core.Tasks
|
|||
{
|
||||
var logsIds = await _operateLogServices.Add(operateLogs);
|
||||
}
|
||||
|
||||
if (jobid > 0)
|
||||
{
|
||||
var model = await _tasksQzServices.QueryById(jobid);
|
||||
if (model != null)
|
||||
{
|
||||
var list = await _operateLogServices.Query(d => d.IsDeleted == false);
|
||||
model.RunTimes += 1;
|
||||
var separator = "<br>";
|
||||
model.Remark =
|
||||
$"【{DateTime.Now}】执行任务【Id:{context.JobDetail.Key.Name},组别:{context.JobDetail.Key.Group}】【执行成功】:异常数{list.Count}{separator}"
|
||||
+ string.Join(separator, StringHelper.GetTopDataBySeparator(model.Remark, separator, 9));
|
||||
|
||||
await _tasksQzServices.Update(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user