我需要创建一个Push Notification Service(我通过SignalR / WebAPI完成)和一个Future Task Runner / Scheduler,可以在某个日期/时间或某个经常性的时间间隔运行。
用例的一个示例是付款提醒服务,如果到期日仍未支付付款,系统会向" admin"发送通知。和#34;消费者"的电子邮件/短信。提醒可以延后一段时间或手动或自动更新到新的日期行。
可能会将Scheduler服务用于其他任何事情,例如设置手动Todos,重复提醒,未来的电子邮件/短信发送日期等等......我正在查看每个日期时间可能有数千封时事通讯电子邮件......
我已经研究了几个选项
1)Quartz.net / Hangfire /后台任务
- >可以在asp.net中运行,也可以作为Windows服务运行。
- >有计划任务/经常性支持等......
- >对我来说似乎过于复杂,如果加上asp.net服务可能效率不高,而不是可扩展的,需要设计好以便将来打样......需要设置额外的商店吗?
2)任务计划程序
- >我的焦土/ pheonix部署场景不太可行
3)外部服务
- > Azure计划程序
- > AWS Cloudwatch调度程序/事件(也可以触发SNS / Lambda等...)
- >看起来像一个非常好的解耦解决方案,但维护/测试/耐用性可能是一个问题?需要根据解决方案正确设置......不知道如何获得" 12因子应用"的prod / dev奇偶校验测试等......
4)事件驱动的消息总线
- >公共汽车具有良好的耐用性和可靠性,但如果我想要取消等,它会变得复杂。
- >限制未来的时间表,就像我认为SQS只有15天的限制或类似的东西。
5)演员模型
- > Akka.net或奥尔良,似乎设置简单,尚未使用它,但似乎有很多适合该法案的东西,执行特定任务的小型演员,调度程序,高性能,易于添加群集更多的工作(每个逻辑是每个演员,休息是配置),易于在本地重现和良好......单个工作单元对我来说很有意义。
- >没有它的经验,但是对于我的场景是否会过度杀伤?对于一个完整的调度程序来说,似乎也是一个很好的未来证据。
- >负。还没有dotnet核心支持
欢迎任何其他建议......我需要在2周内完成。
P.S。真的很想知道什么是Google Now Reminders'建筑......这是一项很酷的服务"提醒我在某个时候做某事"它只是有效。
答案 0 :(得分:2)
您是否注意到奥尔良有一种称为“提醒”(也称为“持久计时器”)的内置机制,听起来就像您要求的那样。
http://dotnet.github.io/orleans/Documentation/Advanced-Concepts/Timers-and-Reminders.html
.NET Core支持即将到来。