我的用例如下:我需要能够安排SQS消息,使得可以在特定日期/时间以及定期根据需要将计划消息添加到队列中。
在实现层面,我基本上要做的是有一些我可以调用的函数,我传入SQS队列,消息和我希望它运行的计划,而不必构建实际的调度程序逻辑。
我还没有在AWS本身看到任何似乎允许的东西,我也没有得到Lambda函数完全按照我的需要做的印象,除非我错过了什么。
我是否应该研究预定流程的其他第三方云服务,或者我最后只是在AWS上运行一个调度机并且有一些可以添加cron作业/ windows计划任务的REST API那将处理SQS消息的调度?
答案 0 :(得分:6)
基于Cloudwatch scheduled events,我可以看到两种稍微不同的完成此方法。第一个是让Cloudwatch从Lambda中解雇。 Lambda要么具有所需的参数,要么从其他地方获取它们 - 例如,DynamoDB表。否则,规则目标允许您指定SQS队列 - 跳过Lambda。但我不确定这是否具备您想要的配置能力。
无论哪种方式,结帐Cloudwatch - >活动 - >在AWS控制台中创建规则以查看您的选择。
答案 1 :(得分:0)
让我感到很生气的是,AWS不支持诸如将队列消息延迟15分钟以上的基本功能。
这就是为什么我为您的确切用例构建了API:计划SQS消息。对于您而言,您可以调用我们提供的“ schedule()” API,该API具有任意长的延迟,该延迟将在延迟的时间发布到您的队列中。
5分钟即可收到您的第一条消息,并且我们有API可以访问计划的消息,以及取消或编辑它们。我在这里有一个原型:
如果您仍在寻找解决方案,请告诉我。我已经在工作时构建了一个计划程序,用于大规模发送电子邮件,所以我在类似的用例方面有经验。