我们有一个Web应用程序,客户可以使用它创建报告。报告包含电子邮件和计划时间(例如:每天上午9点)。
当计划时间与当前时间匹配时,Web应用程序会执行一些操作并将结果发送到电子邮件中。
我有一个要求,需要在swf之上实现可扩展的cron架构。
我需要的架构如下:
1. 用户创建报告(完成) 2. Web应用程序将报告保存到数据库,并通过SQS(简单查询服务)将报告数据和计时器发送到cron微服务。(完成) 3. Cron微服务读取传入的SQS消息,并在定时器过期时发送回SQS消息。(需要这个) 4. Web应用程序读取SQS消息并触发数据分析器和邮件发送功能以发送分析后的数据。(完成)
从我了解的SWF服务来看,我们可以创建cron作业和SWF自动缩放。如何使用SWF创建可扩展的cron微服务?
欢迎任何建议...
附言:Web应用程序是使用nodejs编写的,最好使用nodejs编写微服务。
当计划时间与当前时间匹配时,Web应用程序会执行一些操作并将结果发送到电子邮件中。
我有一个要求,需要在swf之上实现可扩展的cron架构。
我需要的架构如下:
1. 用户创建报告(完成) 2. Web应用程序将报告保存到数据库,并通过SQS(简单查询服务)将报告数据和计时器发送到cron微服务。(完成) 3. Cron微服务读取传入的SQS消息,并在定时器过期时发送回SQS消息。(需要这个) 4. Web应用程序读取SQS消息并触发数据分析器和邮件发送功能以发送分析后的数据。(完成)
从我了解的SWF服务来看,我们可以创建cron作业和SWF自动缩放。如何使用SWF创建可扩展的cron微服务?
欢迎任何建议...
附言:Web应用程序是使用nodejs编写的,最好使用nodejs编写微服务。
更新 1:花费一些时间研究可能的解决方案后,我找到了https://github.com/capside/CloudCron项目。但它依赖于云监控事件。对于许多定时任务来说,我认为它可能会收取很高的费用。
更新 2: Banjo Obayomi建议使用带有SQS和CWE的Lambda函数。
解决方案 1:
- Web应用程序发送SQS消息。
- SQS消息触发Lambda函数1
- Lambda函数创建CWE规则
- CWE规则触发Lambda函数2
- Lambda函数2将SQS消息发送回Web应用程序。
限制: 我们每个区域只能创建100个CWE规则。这意味着Web应用程序无法生成超过100个具有计划日期的报告。
等待计时器到期
然后3.发送sqs消息。 问题是:1)我如何使lambda函数等待? 2)如何使lambda函数重复发送sqs消息,例如:每2小时发送一次电子邮件
? 3)如何从lambda函数中删除cron任务? - omurbek