当预定时间与当前时间匹配时,Web应用程序会执行某些操作并将结果发送到电子邮件.
我有一个要求,我需要在swf之上实现可扩展的cron架构.
我需要的架构如下所示:
>用户创建报告(完成)
> Webapp将报告保存到数据库,并通过SQS(简单查询服务)将报告数据和计时器发送到cron微服务. (DONE)
> Cron微服务读取传入的SQS消息,并在计时器结束后发回SQS消息. (需要这个)
> Webapp读取SQS消息并触发Data Analyzer和Emailer功能以发送分析数据. (DONE)
从我读到的SWF服务是我们可以创建cron作业和SWF autoscales.如何使用SWF创建可扩展的cron微服务?
对任何建议开放……
附: Web应用程序是用nodejs编写的,在nodejs中编写微服务会很好.
更新1:花了一些时间研究可能的解决方案,
我找到了https://github.com/capside/CloudCron项目.但它依赖于cloudwatch事件.对于许多预定的任务,它可能会收取很多IMO.
更新2:
Banjo Obayomi建议在SQS和CWE中使用Lambda函数.
解决方案1:
> Webapp发送SQS消息.
> SQS消息触发Lambda function1
> Lambda函数创建CWE规则
> CWE规则触发Lambda function2
> Lambda function2将SQS消息发送回webapp.
限制:
我们每个地区只能创建100个CWE规则.这意味着webapp无法生成超过100个具有计划日期的报告.
链接:
cron-in-aws-with-lambda-function
https://aws.amazon.com/blogs/aws/aws-lambda-adds-amazon-simple-queue-service-to-supported-event-sources/