项目作者: STREET-77

项目描述 :
实现QuartzNet单机XML的NetCore封装,目的是能够让QuartzNet在NetCore环境拿来就用。数据库持久化方式(集群)请参考[QuartzNet](https://github.com/quartznet/quartznet/tree/master/database/tables)。
高级语言: C#
项目地址: git://github.com/STREET-77/NETCore.QuartzExtensions.git
创建时间: 2020-07-28T01:45:01Z
项目社区:https://github.com/STREET-77/NETCore.QuartzExtensions

开源协议:

下载


NETCore.QuartzExtensions

实现QuartzNet单机XML的NetCore封装,目的是能够让QuartzNet在NetCore环境拿来就用。数据库持久化方式(集群)请参考QuartzNet

使用方式

  1. 项目引用 NETCore.QuartzExtensions

  2. 项目根目录下引入XML配置文件(可手动配置文件位置)

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. version="2.0">
    5. <processing-directives>
    6. <overwrite-existing-data>true</overwrite-existing-data>
    7. </processing-directives>
    8. <schedule>
    9. <job>
    10. <name>jobName1</name>
    11. <group>jobGroup1</group>
    12. <description>job description</description>
    13. <!-- Job类型,命名空间 -->
    14. <job-type>NETCore.QuartzExtensions.Tests.TestJob, NETCore.QuartzExtensions.Tests</job-type>
    15. <durable>true</durable>
    16. <recover>false</recover>
    17. </job>
    18. <job>
    19. <name>jobName2</name>
    20. <group>jobGroup1</group>
    21. <description>job description</description>
    22. <job-type>NETCore.QuartzExtensions.Tests.TestJob2, NETCore.QuartzExtensions.Tests</job-type>
    23. <durable>true</durable>
    24. <recover>false</recover>
    25. </job>
    26. <trigger>
    27. <simple>
    28. <name>simpleName</name>
    29. <group>simpleGroup</group>
    30. <description>SimpleTriggerDescription</description>
    31. <job-name>jobName1</job-name>
    32. <job-group>jobGroup1</job-group>
    33. <start-time>1982-06-28T18:15:00.0Z</start-time>
    34. <misfire-instruction>SmartPolicy</misfire-instruction>
    35. <!-- 重复次数 -->
    36. <!-- -1:不限制 -->
    37. <repeat-count>-1</repeat-count>
    38. <!-- 重复间隔时间(毫秒级) -->
    39. <repeat-interval>5000</repeat-interval>
    40. </simple>
    41. </trigger>
    42. <trigger>
    43. <cron>
    44. <name>cronName</name>
    45. <group>cronGroup</group>
    46. <job-name>jobName2</job-name>
    47. <job-group>jobGroup1</job-group>
    48. <start-time>2020-07-16T16:20:00+08:00</start-time>
    49. <!-- 每10秒执行一次 -->
    50. <cron-expression>0/10 * * * * ?</cron-expression>
    51. </cron>
    52. </trigger>
    53. </schedule>
    54. </job-scheduling-data>
  3. 继承IJob实现业务逻辑

    1. public class TestJob : IJob
    2. {
    3. public async Task Execute(IJobExecutionContext context)
    4. {
    5. // 业务逻辑
    6. await Task.CompletedTask;
    7. }
    8. }
  4. 服务注入Quartz

    1. var hostBuilder = Host.CreateDefaultBuilder()
    2. .ConfigureServices(services =>
    3. {
    4. // 注入Quartz
    5. // 多个任务直接注入使用
    6. services.AddQuartz<TestJob>()
    7. .AddScoped<TestJob2>();
    8. })
  5. 在构造函数中获取QuartzSchedulerFactory

    1. public class TestHostService : IHostedService
    2. {
    3. private readonly QuartzSchedulerFactory _quartzSchedulerFactory;
    4. public HostService(QuartzSchedulerFactory quartzSchedulerFactory)
    5. {
    6. _quartzSchedulerFactory = quartzSchedulerFactory;
    7. }
    8. public async Task StartAsync(CancellationToken cancellationToken)
    9. {
    10. // 启动任务
    11. await _quartzSchedulerFactory.StartAsync(cancellationToken);
    12. }
    13. public async Task StopAsync(CancellationToken cancellationToken)
    14. {
    15. // 停止任务
    16. await _quartzSchedulerFactory.Shutdown(cancellationToken);
    17. }
    18. }