Php 用兔子管理工人
我在当前的php应用程序中实现了rabbitMQ,以处理由Worker处理的异步作业。但我目前的问题是,我应该如何监控和放大或缩小员工。此外,我还想添加错误处理,以防所有工人死亡。我曾想过以下两种方法,但不知道哪一种更好:Php 用兔子管理工人,php,rabbitmq,Php,Rabbitmq,我在当前的php应用程序中实现了rabbitMQ,以处理由Worker处理的异步作业。但我目前的问题是,我应该如何监控和放大或缩小员工。此外,我还想添加错误处理,以防所有工人死亡。我曾想过以下两种方法,但不知道哪一种更好: 在生产者端,我将分析rabbitMQ队列大小。如果队列大小(挂起的任务列表)超过阈值,我会在每次执行producer脚本时创建一个新的工作线程,但在此之前,我会检查服务器负载(使用linux命令正常运行时间)。如果服务器负载小于阈值,则只会创建新的工作进程。在使用者端(在wo
请帮忙。我不建议在没有工作要做的时候费心把它们缩小到零。剩下的工人(如果你想缩小到1)只需等待其他东西消费,这不是一个昂贵的操作 在决定是否扩大规模方面,我建议利用RabbitMQ管理HTTP API()。您可以通过GET操作使用与队列相关的特性来获取有关队列的信息,包括当前有多少条目正在等待处理 有了这些信息,你就可以决定如果它达到某个阈值,或者在某段时间内随着每次检查而不断增加,或者类似的事情,你就可以进行缩放。这可以从消费者方面完成 在错误处理方面,我建议封装worker的RabbitMQ连接方面,以便在发生RabbitMQ异常时重新建立连接并继续
如果它是一种与RabbitMQ无关的更严重的异常类型,那么您可能需要在这样一个级别捕获它,即工作进程基本上会在它死亡之前生成一个新的工作进程。当然,还有其他类型的异常(例如,内存不足的情况),在这些情况下,尝试继续下去确实是不可行的,您的程序应该完全死掉。很难准确地回答您的问题,因为上下文中有许多方面没有包括在内
感谢您的回复。请您解释一下,我如何实现您在第二点中提到的关于php中等待加载的线程的解决方案。据我所知,php不直接支持多线程。另外,正如我前面提到的,我如何处理由于任何原因导致的主管线程崩溃的情况?