简单的调度程序,定时任务(支持Cron表达式),延时队列,不支持分布式,支持失败重试,支持设置失败次数 A simple scheduler, timed tasks (supports Cron expressions), delayed queues, does not support distributed, delayed queues support failure retry, support for setting the number of failures
$ dotnet add package MiniSchedulerA simple scheduler, timed tasks (supports Cron expressions), delayed queues, does not support distributed, delayed queues support failure retry, support for setting the number of failures
Software architecture description
static void Main(string[] args)
{
IDelayQueue delayQueue = MiniSchedulerFactory.CreateDelayQueue(new QueueOptions() { EnableRetry = true });
delayQueue.Enqueue(new QueueItem()
{
TaskName = "Test01",
DelayTime = TimeSpan.FromSeconds(10),
DelayAction = () =>
{
Console.WriteLine("Test01 Action {0}", DateTime.Now.ToString());
return true;
}
});
delayQueue.Enqueue(new QueueItem<string>()
{
TaskName = "Test02",
DelayTime = TimeSpan.FromSeconds(16),
ActionData = "TestData",
EnableRetry = true,
DelayAction = (str) =>
{
Console.WriteLine("Test02 Action: {0}, Data: {1}", DateTime.Now.ToString(), str);
return false;
}
});
//Schedule Task
IScheduleTask schedule = MiniSchedulerFactory.CreateSchedule();
schedule.AddTask(new ScheduleTaskItem("10-30/5 * * * * ?", () =>
{
Console.WriteLine("Schedule Task 1: {0}", DateTime.Now.ToString());
return true;
}));
List<int> list = new List<int>(){ 1 };
schedule.AddTask(new ScheduleTaskItem<List<int>>("5 * * * * ?", list, (data) =>
{
Console.WriteLine("Schedule Task 2: {0}", DateTime.Now.ToString());
return true;
}));
Console.ReadLine();
}