gpt4 book ai didi

java - 如何利用 AWS 每分钟执行一次方法(多个进程/实例)

转载 作者:行者123 更新时间:2023-12-01 11:51:47 25 4
gpt4 key购买 nike

我有一个每分钟发送 SQS 消息的进程。消息每分钟发出一次非常重要,因此我计划在多个实例上运行该流程,以提高容错能力。

即使它在多个实例上运行,我也只希望 SQS 消息每分钟发出一次。因此,如果机器 A 发送消息,我不希望机器 B 发送它们,反之亦然。

我想避免主/从设置。

我想使用一个单独的SQS队列来发送一条完成消息,该消息可以由一个进程接收,以开始分派(dispatch)消息并在完成/一分钟后发送一条完成消息,但如果完成消息没有由于失败或其他问题而被发送,他们的循环将结束,这是 Not Acceptable 。

我还考虑让调度消息的进程在 simpleDB 或可能的另一个数据库中放置一个时间戳,并让进程按一定时间间隔检查时间戳。第一个检查它并发现它早于一分钟的人将更新时间戳并分派(dispatch)消息。

我调查了 SWF,发现它可以在计时器上运行工作程序/Activity ,但 SWF 似乎对此有些过分,我宁愿避免在访问我的数据库的情况下设置和运行它。

有没有人有一个优雅的解决方案来解决这样的问题?

最佳答案

我们使用 mysql 数据库来执行类似于您建议的操作。但我们不会尝试读取时间戳(竞争条件?)。该表在时间戳上有一个唯一索引。每个实例上的进程尝试插入它们运行时的时间戳,例如“2015-02-27 12:47:00”。如果 mysql 返回重复键错误,则首先出现另一个实例,并且它们不执行任何操作。如果插入成功,他们会发送 SQS 消息。

您可能还想尝试使用 google 获取分布式 cron 系统。

关于java - 如何利用 AWS 每分钟执行一次方法(多个进程/实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28755780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com