Php RabbitMQ-耗时作业的并行处理
让我给你一个我正在努力完成的背景 我必须在Linux上用php/mysql开发一个系统。我计划使用RabbitMQ来实现一些需要并行处理的功能 我每个客户都有一个作业,根据要为给定客户处理的数据量,可能需要5分钟到70分钟才能完成。客户端可以随机发布作业请求 让我们假设5个客户发布他们的作业,完成各自作业所需的时间如下所示Php RabbitMQ-耗时作业的并行处理,php,mysql,linux,rabbitmq,Php,Mysql,Linux,Rabbitmq,让我给你一个我正在努力完成的背景 我必须在Linux上用php/mysql开发一个系统。我计划使用RabbitMQ来实现一些需要并行处理的功能 我每个客户都有一个作业,根据要为给定客户处理的数据量,可能需要5分钟到70分钟才能完成。客户端可以随机发布作业请求 让我们假设5个客户发布他们的作业,完成各自作业所需的时间如下所示 客户1工作-65分钟 客户2工作-10分钟 客户3工作-5分钟 客户4工作-10分钟 客户5工作-20分钟 正常队列有一个问题,因为client1的作业需要65分钟才能完
- 客户1工作-65分钟
- 客户2工作-10分钟
- 客户3工作-5分钟
- 客户4工作-10分钟
- 客户5工作-20分钟
这在Rabbitmq中可能吗?如果是,如何实现 通过使用
预回迁计数=1创建每个工作者消费者,可以轻松完成这一任务。这就是您想要的吗?prefetch count=1在一定程度上解决了这个问题,但它仍然需要预定义的使用者才能运行。以我的示例为例,其中5个客户作业将被处理。如果第一个作业需要65分钟,第二个作业需要10分钟,那么prefetch_count=1将允许我在第二个作业之后巧妙地通过第三个作业,但5分钟的作业仍需要等待10分钟。我想找出一种方法,不必等待10分钟,只允许第三个作业在启动后立即开始执行。希望我的问题清楚?不,不清楚。队列中由一个使用者接收的消息不会阻止其他消息被使用。同意。但我说的是工人。那么,您的意思是,通过使用预回迁计数=1,我可以为5个客户端作业创建5个消费者吗?很抱歉,如果您使用使用者逻辑包装脚本并运行5次以获得5个并发工作线程,那么我已经从这里给出的理解中理解了预取计数。或者,你可以乱用叉子和穿线,但这是一种快速而安全的方法。