AdminJobController.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System;
  2. using System.Threading.Tasks;
  3. using GxPress.Api.Tools;
  4. using GxPress.Service.Interface.ElasticSearch;
  5. using Microsoft.AspNetCore.Authorization;
  6. using Microsoft.AspNetCore.Mvc;
  7. using Quartz;
  8. namespace GxPress.Api.AdminControllers
  9. {
  10. [Route("api/admin/job")]
  11. [ApiController]
  12. [Authorize]
  13. public class AdminJobController : ControllerBase
  14. {
  15. private readonly ISchedulerFactory _schedulerFactory;
  16. private readonly IServiceProvider _serviceProvider;
  17. private IScheduler _scheduler;
  18. private readonly IElasticSearchService _elasticSearchService;
  19. public AdminJobController(ISchedulerFactory schedulerFactory, IElasticSearchService elasticSearchService, IServiceProvider serviceProvider)
  20. {
  21. this._schedulerFactory = schedulerFactory;
  22. _elasticSearchService = elasticSearchService;
  23. _serviceProvider = serviceProvider;
  24. }
  25. [HttpGet]
  26. [AllowAnonymous]
  27. public async Task<bool> Get()
  28. {
  29. //1、通过调度工厂获得调度器
  30. _scheduler = await _schedulerFactory.GetScheduler();
  31. //2、开启调度器
  32. await _scheduler.Start();
  33. //3、创建一个触发器
  34. var trigger = TriggerBuilder.Create()
  35. .WithSimpleSchedule(x => x.WithIntervalInSeconds(60).RepeatForever())//每10秒执行一次
  36. .Build();
  37. //构建工厂 构造函数
  38. _scheduler.JobFactory = new JobFactory(_serviceProvider, _elasticSearchService);
  39. // await _scheduler.ScheduleJob(trigger);
  40. //4、创建任务
  41. var jobDetail = JobBuilder.Create<MyJob>()
  42. .WithIdentity("job1", "group1")
  43. .Build();
  44. //5、将触发器和任务器绑定到调度器中
  45. await _scheduler.ScheduleJob(jobDetail, trigger);
  46. //await _scheduler.Start();
  47. //await _scheduler.Shutdown();
  48. return true;
  49. }
  50. }
  51. }