按需计划程序

时间:2016-08-11 15:23:05

标签: amazon-web-services message-queue visibility amazon-sqs

我有一个守护进程,它不断地为消息收集AWS SQS队列,一旦收到消息,我需要不断增加可见性超时,直到消息被处理完毕。

我想建立一个按需调度程序"每隔X分钟左右就会增加消息的可见性超时,然后在处理完消息后停止调度程序。

我尝试过使用Spring Scheduler(https://spring.io/guides/gs/scheduling-tasks/),但这并不能满足我的需求,因为它没有按需,无论如何都会运行。

  • 这是在拥有大量机群的分布式系统上完成的。
  • 完整处理消息最多可能需要10个小时。
  • 我们无法将队列的默认可见性超时设置为较高的数字(由于其他原因)。

我只想知道是否有一个好的图书馆,我可以利用它来做这件事?谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

SQS消息的最大可见性超时为12 hours。你接近这个限制了。也许您应该考虑在处理队列时从队列中删除该消息,如果发生错误或需要,您可以重新排队消息。

您可以为Spring Scheduler设置触发器,允许您手动设置下一个执行时间。请参阅此answer。这使您可以更好地控制计划任务的运行时间。

答案 1 :(得分:0)

考虑到这种情况,拉动消息(因此启动可见性超时计时器)然后尝试获取锁定并不是最可行的方法(特别是因为消息可能需要很长时间才能处理)。

由于消息可能需要很长时间才能处理并因此删除,因此不必增加您已提取的消息的超时时间。因此,我们采取了不同的方式。

我们首先获得一个锁定然后拉取消息,然后在我们获得锁定后将可见性超时时间提高到11小时。