【问题标题】:Setting tasks at a future date on a SQS-based worker?在基于 SQS 的工作人员的未来日期设置任务?
【发布时间】:2015-03-12 02:26:10
【问题描述】:

我们正在寻找一些关于如何使用 AWS 简单队列服务 (SQS) 和用 Node.js 编写的工作程序在未来安排任务的建议/策略。

任务必须安排在例如“从现在起 2 小时”。与 cron 作业不同,它们不是定期的,它们必须在计划后 2 小时内执行(不过,它不需要精确到秒)。
当然,它们还需要存储在某种持久性数据库中,直到它们被执行。因此,将它们放在服务器上的内存中(例如,等待setTimeout 被触发)是行不通的。

对我们如何管理有任何想法吗?

【问题讨论】:

    标签: javascript node.js queue amazon-sqs


    【解决方案1】:

    我不认为在这里使用 sqs 真的是最好的用例。但是,如果您必须这样做,则有 2 个选项。 1. 当您将消息发布到队列时,可以选择延迟消息传递。这意味着该消息不会在那段时间内传递给任何人。但这个值不能超过 15 分钟。 2.您可以在消费者应用程序中读取消息,然后如果尚未执行该操作,则只需更改该一条消息的可见性超时,以便在所述操作之前该消息对任何其他消费者不可用不被执行。

    【讨论】:

    • 有趣,它可以工作,但我不认为它真的很理想。您说 SQS 不是这里最好的,我可能同意……但是我们还能对 Elastic Beanstalk 工作人员使用什么? (如果重要,我们使用 Node.js)
    • 我可能会建议您为此使用简单的工作流程。使用 swf,您可以在任何时间安排活动。除了将消息放入队列之外,您还可以启动一个新的 wf,它将在所述间隔之后安排作业。您所要做的就是在代码中设置计时器,届时活动将自行执行。您还可以在第 1 步完成后使用相同的工作流程来执行第 2 步,例如向某人发送工作已完成的通知。
    • 我明白,但是如何将 SWF 与 Elastic Beanstalk 工作器集成?
    • 如果使用 Java 和 swf,deplorable 单元可以是 jar 文件或 war 文件,您可以像任何其他可部署文件一样将其与 bean stalk 集成。
    • 很抱歉,但我不确定我是否还在关注你。我对 SWF 的了解有限,但我认为 Elastic Beanstalk Workers 只使用 SQS?其次,我们使用的是 JavaScript,而不是 Java!
    猜你喜欢
    • 2012-06-13
    • 2015-04-29
    • 1970-01-01
    • 2015-07-22
    • 2012-08-11
    • 1970-01-01
    • 2019-04-22
    • 2013-03-11
    • 2012-10-08
    相关资源
    最近更新 更多