我的要求是在预定时间运行作业(针对每个客户端)。
我的.net core应用程序将由多个客户端使用。 属于特定客户端的登录用户(具有管理员权限),使用 UI 界面在特定时间安排此作业并将其保存到数据库。 因此,仅与该客户相关的所有数据都应由作业在特定日期处理。 而另一个客户端用户可能会安排不同的时间。
例如:
客户端 X- 作业应在每月 5 日运行
客户端 Y - 作业应在每月 21 日运行
客户 Z - 作业应在每年 1 月 15 日运行
根据技术要求,这应作为 Azure Function 来解决。
所以我的挑战是:
TimerTrigger
。 (注:当用户更新日程时,定时器应动态重置。)否则如果将其实现为
HttpTrigger
谢谢,
PRI
您是否可以有一个数据库/表,其中包含哪些作业应该在何时运行的信息?因此,当用户从 UI 安排作业时,它会将如下内容写入数据库:
职位ID | 客户端ID | 运行日期 | 下次运行日期 | 间隔 | 工作状态 |
---|---|---|---|---|---|
1 | 12345 | 2024-03-15 | 2024-03-15 | 7 | 待定 |
然后,您可以编写一个每天运行的 TimerTrigger 函数,并查询数据库以查看当天到期的作业。如果作业到期,它会对该客户的数据执行您的函数,然后根据间隔值更新 NextRunDate 字段(即每月 = 在下个月的同一天运行)。
为每个客户端创建一个全新的函数并不是一个好习惯——不要这样做。您应该将应用程序状态存储在数据库、队列或其他类似工具中。