当前位置: 首页 > 知识库问答 >
问题:

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

唐骏祥
2023-03-14

我有一个进程,每分钟发送SQS消息。消息每分钟发出一次是很重要的,所以我计划在多个实例上运行这个过程,这样它就更容错了。

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

我想避免有一个主/从设置。

我曾想过使用一个单独的SQS队列来发送一条完成的消息,该消息可以由其中一个进程接收,以开始发送消息,并在完成时/一分钟后发送一条完成的消息,但如果由于故障或其他问题而未发送完成的消息,它们将循环结束,这是不可接受的。

我还考虑让发送消息的进程在simpleDB或另一个DB中放置一个时间戳,并让进程每隔一段时间检查时间戳。第一个检查它并发现它超过一分钟的人会更新时间戳并发送消息。

我调查了SWF,发现它可以在计时器上运行工作人员/活动,但SWF似乎对此大材小用,我宁愿避免在访问我的数据库时安装和运行它。

有人能为这样的问题提供优雅的解决方案吗?

共有1个答案

慕容超
2023-03-14

我们使用我们的mysql数据库来执行类似于您建议的操作。但是我们不试图读取时间戳(比赛条件?)。表在时间戳上有一个唯一的索引。每个实例上的进程试图插入它们运行的分钟的时间戳,例如“2015-02-27 12:47:00”。如果mysql返回一个重复的键错误,那么另一个实例首先出现,他们什么也不做。如果插入成功,他们将发送SQS消息。

你也可以尝试谷歌的分布式cron系统。

 类似资料:
  • 问题内容: 我正在cronjob中运行PHP脚本,我想每5分钟发送一封电子邮件 我当前的(crontab)cronjob: cronmail.php如下: 但是我没有在30分钟内收到此配置的电子邮件。 问题答案: 在文件中,这些字段是: 每小时的分钟。 一天中的小时。 一个月中的某天。 一年中的月份。 一周中的天。 所以: 表示每小时10分钟执行一次。 如果您希望每五分钟使用一次,请使用以下任一方

  • 如何每5分钟左右运行一个PHP文件?我尝试使用cron,但它似乎不起作用。假设我想让我的网站运行一个播放声音的php文件。如何使php文件每5分钟运行一次,使声音每5分钟播放一次。我知道JavaScript可以做到这一点,因此函数可以按设定的间隔运行,但我希望文件也这样做。 这样做的原因是我正在创建一个网站,我希望用户得到实时通知。为了做到这一点,我需要运行php文件,以便它可以检测用户通知的更改

  • 问题内容: 如何每分钟运行一个函数?在JavaScript中,我可以做类似的事情,在Swift中是否存在类似的事情? 想要的输出: 你好世界每分钟一次… 问题答案: 记住要导入基金会。 斯威夫特4:

  • 问题内容: 我创建了一个电子邮件队列数据库表。我将把我的PHP应用程序需要发送的所有电子邮件插入此表。 然后,另一个PHP脚本将查找所有未发送的电子邮件并将其发送。 我使用cronjobs运行此脚本。不幸的是,cronjobs每分钟最多只能运行一次。因此,在最坏的情况下,用户必须等待一分钟,直到真正发送他的电子邮件为止。 我目前的解决方法是,使用附加的sleep参数调用脚本并复制cronjobs。

  • 本文向大家介绍Winform基于多线程实现每隔1分钟执行一段代码,包括了Winform基于多线程实现每隔1分钟执行一段代码的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Winform基于多线程实现每隔1分钟执行一段代码的方法,分享给大家供大家参考。具体实现方法如下: 1.定义相关的类Timer.cs,代码如下: 2.在主线程部分引用此类。在需要执行的event加入: 希望本文所述对大家的

  • 问题内容: 我有一个ajax javascript方法,可从页面等中提取数据。 我希望此过程按一定的时间间隔运行,例如每分钟。但是我不希望它永远循环,所以最多可以循环3次。 实现此目的的最佳方法是什么? 问题答案: 像这样: