在AWS中延迟工作

时间:2014-11-10 13:35:26

标签: amazon-web-services cloud amazon-sqs

我在亚马逊SQS里面有消息。对于某些消息,我需要在我开始处理它们之前执行六个小时的延迟(延迟是给定的)。 一个解决方案是做Thread.Sleep(6h)。 我不喜欢这个解决方案,因为我担心线程会发生某些事情而且我会丢失数据。另一个解决方案是读取消息,看是否已经过了6个小时,如果没有将消息返回队列。我不喜欢它,因为程序会发生很多。 有没有更好的解决方案??

1 个答案:

答案 0 :(得分:0)

您可以创建单独的多个队列并单独放置队列项。

示例1:

您可以拥有6个队列,如Queue0,Queue1,Queue2,Queue3,Queue4,Queue5,并使用散列函数,如hash(x)= current-hour%6 - 此函数将返回0到5之间的值,您可以将项目放入Queue_f(x)并根据当前时间单独读取队列。

示例2:

如果当前时间是01:00小时,您可以创建单独的队列,如Queue0700Hours,如果当前时间是02:00,您可以创建另一个新队列,如同Queue0800Hours一样聪明并且去。

通过这种方式,您可以根据当前时间戳分离等待/停止处理并独立选择生产者和消费者的需求。