按需调度程序
On Demand Scheduler
我有一个守护进程,它不断地为消息汇集 AWS SQS 队列,一旦它收到消息,我需要不断增加可见性超时,直到消息被处理。
我想设置一个 "on demand scheduler" 每隔 X 分钟左右增加消息的可见性超时,然后在处理消息后停止调度程序。
我曾尝试使用 Spring 调度程序 (https://spring.io/guides/gs/scheduling-tasks/),但这不能满足我的需求,因为它不是按需运行的,无论如何都会运行。
- 这是在拥有大型车队的分布式系统上完成的。
- 一条消息最多可能需要 10 个小时才能完成处理。
- 我们无法将队列的默认可见性超时设置为较高数值(由于其他原因)。
我只想知道是否有一个好的库可以用来做这件事?感谢您的帮助!
SQS 消息的最大可见性超时为 12 hours。你已经接近那个极限了。也许您应该考虑在处理消息时从队列中删除消息,如果发生错误或需要,您可以重新排队消息。
您可以为Spring Scheduler 设置触发器,允许您手动设置下一次执行时间。参考这个answer。这使您可以更好地控制计划任务的运行时间。
在这种情况下,拉取一条消息(从而启动可见性超时计时器)然后尝试获取锁并不是执行此操作的最可行方法(尤其是因为消息可能需要很长时间才能处理) .
由于消息可能需要很长时间才能处理并因此被删除,因此必须继续增加已提取消息的超时时间是不可行的。因此,我们走了不同的路。
我们先获取锁,然后拉取消息,然后在获取锁后将可见性超时增加到 11 小时。
我有一个守护进程,它不断地为消息汇集 AWS SQS 队列,一旦它收到消息,我需要不断增加可见性超时,直到消息被处理。
我想设置一个 "on demand scheduler" 每隔 X 分钟左右增加消息的可见性超时,然后在处理消息后停止调度程序。
我曾尝试使用 Spring 调度程序 (https://spring.io/guides/gs/scheduling-tasks/),但这不能满足我的需求,因为它不是按需运行的,无论如何都会运行。
- 这是在拥有大型车队的分布式系统上完成的。
- 一条消息最多可能需要 10 个小时才能完成处理。
- 我们无法将队列的默认可见性超时设置为较高数值(由于其他原因)。
我只想知道是否有一个好的库可以用来做这件事?感谢您的帮助!
SQS 消息的最大可见性超时为 12 hours。你已经接近那个极限了。也许您应该考虑在处理消息时从队列中删除消息,如果发生错误或需要,您可以重新排队消息。
您可以为Spring Scheduler 设置触发器,允许您手动设置下一次执行时间。参考这个answer。这使您可以更好地控制计划任务的运行时间。
在这种情况下,拉取一条消息(从而启动可见性超时计时器)然后尝试获取锁并不是执行此操作的最可行方法(尤其是因为消息可能需要很长时间才能处理) .
由于消息可能需要很长时间才能处理并因此被删除,因此必须继续增加已提取消息的超时时间是不可行的。因此,我们走了不同的路。
我们先获取锁,然后拉取消息,然后在获取锁后将可见性超时增加到 11 小时。