通过时间戳调度要执行的许多作业

时间:2012-01-12 18:52:35

标签: php scheduled-tasks rabbitmq

我有一个生产者,它从twitter流中读取并使用rabbitmq作为消息代理将任务放在队列中。

作业通常需要大约3-5秒才能执行,在作业结束时我会在完成后通知用户。但是,我还想通过向用户发送更多消息,在工作完成后的10分钟/ 30分钟/ 60分钟内提醒他们。

我无法找出安排这些额外消息的最佳方法。我想创建cron作业来在那些特定的时间戳上运行消息脚本,但这似乎错误,每小时有数千个作业。另一个想法是运行一个守护程序,该守护程序将轮询数据库或从队列中读取并在发送之前检查计划的时间戳和当前时间。

理想情况下,如果这可以通过延迟消息在消息代理端完成,那么它会更清晰,但我读到RabbitMQ不支持这样的东西。

调度需要按时间戳执行的许多作业的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

只需创建一个每分钟运行的单个cron作业,并检查另一个队列,该队列具有发送消息的时间戳。时间戳过去后,发送消息并从队列中删除该项。