过时提醒 .net mvc web api

dated reminders .net mvc web api

我正在构建一个 mvc5 & webapi 2 网站,并且正在努力解决消息队列和通用总线的概念。具体来说,我正在尝试添加任务并为这些任务指定截止日期。 我想在任务到期前一天向用户发送上述任务的提醒(无需用户登录,有点像后台任务)

我配置了一个电子邮件服务,并且在用户执行任务时工作。例如,用户输入一个任务,JS 函数触发一个构建任务并使用我的电子邮件服务发送电子邮件的网络 api。但这是依赖于用户输入的,并且仅在用户首次输入任务时有效。

我的堆栈 - - MVC5 ASP.NET(标准)和 WebApi2 - SQL 服务器 - JS 和 AJAX - AWS 托管

一些研究为我指出了 SQS 和 SNS 的方向,我有点了解排队系统,但我仍然不知道原始消息如何到达 SNS然后进入队列的主题。此外,SQS 队列的消息生命周期最长为 14 天,这不适用于从当前日期起几个月到期的任务。 所以我不能只是将任务发送过来并让它在那里放置超过 14 天直到交付。过去,当我用 PHP 编写代码时,我们为 MySQL 服务器表创建了 cron 作业,以查看是否有任何更改,然后在某处执行或输出,并编写小型应用程序来监听更改,然后发送电子邮件。不确定 .NET 是否存在类似的东西,或者 SQS/SNS 选项是否是最好的方法。

我研究的东西:

https://aws.amazon.com/blogs/aws/queues-and-notifications-now-best-friends/
https://www.youtube.com/watch?v=UesxWuZMZqI
https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/sns-apis-intro.html
https://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.html

您已经确定了工作队列和工作使用者。您缺少工作制作人。 Web 应用程序是生产者,但需要用户交互(如您所知)。

最简单的做法是编写一个(控制台)程序来读取您的事件存储并为队列生成工作(当前提醒)。然后,您将安排该程序在循环中执行——就像一个 cron 作业。 Windows 有 Task Scheduler 以及来自其他供应商的 cron-like 服务。

您可以变得更高级,并从您的程序中构建一个服务,这样它将 运行 持续不断。