编写定时任务
约 220 字小于 1 分钟
2025-02-12
在 Mirage 工程中,您可以通过实现 IScheduleTask 接口来实现定时任务。
internal class MyScheduleTask : IScheduleTask
{
ILogger<MyScheduleTask> _logger;
public double[] Timers => new double[] { 1.30 , 5.10 };//每天1点30分 和 5点10分执行
public int Interval => 10000; //多长时间执行一次,单位ms,当Timers不为空时,此属性无效
public int RetryInterval => 10000; //发生异常后,重试间隔,单位:ms
public MyScheduleTask(ILogger<MyScheduleTask> logger)
{
this._logger = logger; //依赖注入一些用到的类
}
public void Run()
{
...这里写定时任务的代码
}
}
在 Program.cs 中注册:
//注册微服务
msp.Register<Controllers.DemoController>("DemoService", "测试服务", true);
msp.Register<Controllers.DemoWebSocketController>("PushService", "信息推送", true);
//注册定时任务
msp.RegisterScheduleTask<MyScheduleTask>();
msp.ServiceProviderBuilded += Msp_ServiceProviderBuilded;
msp.Build(port, Global.GatewayAddresses)
.Run();
注意
Mirage.ServiceProvider 从 5.5.9 版本起,多个相同的微服务,不会同时执行同一个定时任务。
Mirage.ServiceProvider 从 5.5.9 版本起,多个相同的微服务,不会同时执行同一个定时任务。