马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
媒介
想想隔断前次更新博客已有几个月之久,不是我赖,是真的没时间,由于这个天下,这个行业已经开始卷的锋利了,本日腾出点时间准备写两篇文章,上一篇文章sqlsugar批量操纵数据库只是个开胃菜,本日重点是这篇文章,基于.Net6.0 WebApi的具有跨平台本领的Api 定时Job,本日重要是以dll(不是你明白的dll动态库)挂载方式实现任务,尚有基于Controller API模式,这篇就不讲了。基于如今国产化速率加速,跨平台应用及服务已经是局势所趋了。
一、效果图
二、具体实现
1.NuGet 添加包
2.Program.cs 注册(完备代码)
- using GZY.Quartz.MUI.Extensions;
- using QuartzInventory.Utilities;
- var builder = WebApplication.CreateBuilder(args);
- // Add services to the container.
- builder.Services.AddControllersWithViews();
- builder.Services.AddControllers();
- //1. 添加QuartzUI服务
- builder.Services.AddQuartzUI();
- //2. 添加基于DLL模式的Quartz任务支持
- builder.Services.AddQuartzClassJobs();
- //支持sqlsugar
- builder.Services.AddSqlsugarSetup(builder.Configuration);
- var app = builder.Build();
- // Configure the HTTP request pipeline.
- if (!app.Environment.IsDevelopment())
- {
- app.UseExceptionHandler("/Home/Error");
- // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
- app.UseHsts();
- }
- app.UseHttpsRedirection();
- app.UseStaticFiles();
- app.UseRouting();
- app.UseAuthorization();
- //3.使用Quartz组件
- app.UseQuartz();
- app.MapControllerRoute(
- name: "default",
- pattern: "{controller=Home}/{action=Index}/{id?}");
- //在Use中注册单例实例
- app.Use(async (context, next) =>
- {
- if (next != null)
- {
- await next.Invoke();
- }
- });
- app.Run();
复制代码 3.appsettings.json设置数据库毗连(完备代码)
- "ConnectString": "Server=STRING\\MSSQLSERVERR2;Database=HISDB;User=sa;Password=123456;"
复制代码 4.办理方案新建Utilities文件夹实现一些资助类
1)AppSettingHelper.cs(设置文件资助类)
- namespace QuartzInventory.Utilities
- {
- public class AppSettingHelper
- {
- /// <summary>
- /// 系统配置
- /// </summary>
- public static IConfiguration Configuration { get; set; }
- static AppSettingHelper()
- {
- var builder = new ConfigurationBuilder()
- .SetBasePath(Directory.GetCurrentDirectory())
- .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
- Configuration = builder.Build();
- }
- }
- }
复制代码 2)SqlsugarSetup.cs( Sqlsugar启动类)
- using SqlSugar;
- namespace QuartzInventory.Utilities
- {
- public static class SqlsugarSetup
- {
- public static void AddSqlsugarSetup(this IServiceCollection services, IConfiguration configuration,
- string dbName = "ConnectString")
- {
- SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig()
- {
- DbType = SqlSugar.DbType.SqlServer,
- ConnectionString = configuration[dbName],
- IsAutoCloseConnection = true,
- },
- db =>
- {
- db.Aop.OnLogExecuting = (sql, pars) =>
- {
- Console.WriteLine(sql);//打印sql
- };
- });
- services.AddSingleton<ISqlSugarClient>(sqlSugar);
- }
- }
- }
复制代码 3)新建QuartzDll文件夹,再创建Job文件夹(DLL挂载任务创建)
在Job文件夹中创建用户信息API接口.cs(为了阅读我以中文定名),这内里实现了你的定时任务。必要继承IJobService接口并实现。
- public class 用户信息API接口 : IJobService
复制代码- public string ExecuteService(string parameter)
- {
- //TODO:你的任务调度的业务逻辑
- return "返回任务执行后的结果或业务逻辑(任意)";
- }
复制代码 SqlSugar.Core依靠注入
- private readonly ISqlSugarClient _SqlSugarDB;
- /// <summary>
- /// 依赖注入
- /// </summary>
- public 用户信息API接口(ISqlSugarClient SqlSugarDB)
- {
- _SqlSugarDB = SqlSugarDB;
- }
复制代码 _SqlSugarDB 便是你的DB,比方我要查询全部用户:
- var userList = _SqlSugarDB.Queryable<base_user>().ToList();
复制代码 4)用户信息API接口.cs完备代码
- using GZY.Quartz.MUI.BaseService;using QuartzInventory.Models;using SqlSugar;namespace QuartzInventory.QuartzDll.Job{ public class 用户信息API接口 : IJobService
- { private readonly ISqlSugarClient _SqlSugarDB; /// <summary> /// 依靠注入 /// </summary> public 用户信息API接口(ISqlSugarClient SqlSugarDB) { _SqlSugarDB = SqlSugarDB; } /// <summary> /// 0 0 11 * * ? 天天中午11点触发 /// </summary> /// <param name="parameter"></param> /// <returns></returns> public string ExecuteService(string parameter) { //这是个操纵数据库的例子 var userlist = _SqlSugarDB.Queryable<base_user>().ToList(); //TODO:你的任务调治的业务逻辑 return "返回任务实行后的效果或业务逻辑(恣意)"; } }}
复制代码 三、开辟完后前端设置
比方我服务所在为https://localhost:44353,必要加上后缀**/QuartzUI即可体现UI设置界面。
按钮所代表的功能寄义就不外多赘述了,一眼明白。刚才写完的DLL挂载方式的Job假如举行创建?点击新建按钮,任务范例下拉选择DLL方式。
DLL范例名就是刚才你写代码的类名,还记得用户信息API接口.cs**,没错,下拉会自动找到你对应的类名,选择用户信息API接口。
剩下的按自己实际环境设置就行了,隔断时间是Cron表达式,自己网上搜索,或点击在线天生,使定名称、分组、形貌等自界说。
总结
此Job自带日志 体系,点击实行纪录就可以检察实行过程,而且你代码自界说抛出的非常都可以在上面体现,这种方式照旧很方便的,应用场景也很多,以为日志 体系简朴也可自行增长物理表,自己举行纪录。
|