我在当前的php应用程序中实现了rabbitMQ,以处理由工作人员处理的异步作业。但我目前的问题是,我应该如何监控和扩大或缩小工人。此外,我想添加错误处理,以防所有的工人死亡。我想过以下两种方式,但不知道哪一种更好:用RabbitMQ管理员工
在生产者端,我会分析rabbitMQ队列的大小。如果队列大小(待处理任务列表)大于阈值,我会在每次执行生成脚本时创建一个新的工作者,但在此之前,我将检查服务器负载(使用linux命令正常运行时间)。如果服务器负载小于阈值,则仅创建新工作者。在消费者结束时(在worker.php中),我会应用相同的方法来扩大工作人员,并且我还会检查脚本是否在给定时间内空闲(即,在mq队列中没有挂起的任务),那么它会自动死亡(自动缩减工作人员)。
第二种方法是使用后台进程或cron来监视和缩放工人。但我不想依靠cron(因为我有非常糟糕的经验)或后台进程,因为如果后台进程因某种原因崩溃,那么就无法从中恢复。
请帮忙。
感谢您的答复。你能解释一下我怎么能实现你在第二点提到的关于等待php加载的线程的解决方案。据我所知,PHP不直接支持多线程。另外,正如我之前提到的那样,由于任何原因,我如何处理主管线程崩溃的情况?编辑回答 – user3807016
以包含更多信息 –