我现在正在将作业队列从本地 beanstalkd 服务器移动到 Amazon SQS。但问题是 SQS 对于一个作业只能有很短的延迟(15 分钟)。
在我的应用程序中,有数千个交易,当交易达到到期时间时,我使用 beanstalkd 使交易过期(即调用 api 将交易状态更新为已完成/失败)。
我可以使用任何服务/黑客方法来处理此用例吗?
谢谢
我只是将长期延迟事件的数据粘贴到数据库中,每 ~10-15 分钟运行一次 cronjob,以吸收一组即将到来的作业并写出到 SQS,然后再从数据库中删除。需要考虑的是,一次可以到达多少个作业,并尽量避免两次读取相同的作业,从而将它们再次插入 SQS。
虽然数据库不适合队列,但这主要是高交互性和快速周转的问题。我会将您的问题更多地归类为几周或更长时间后要回来的事情。
您甚至可以将常规消息放入队列中,以获取下一批即将到来的作业。