首页 > 解决方案 > 如何从同一服务器运行不同的 Beanstalkd Laravel 队列?

问题描述

我在同一台服务器上有两个不同的 Laravel 队列。在我的 Supervisord.d 文件夹中,我有两个用于这些队列的 ini 文件。队列中的作业名称不同。但是,每次我运行一项工作并期望一个队列的结果时,其他队列也会干扰。这是 ini 文件的示例:

[program:queue_runner]
command = php /path_to_prod/artisan queue:work --daemon --queue=default,smsInt,smsIntLow --tries=1 --timeout=30
stdout_logfile = /path_to_prod/storage/logs/supervisor.log
redirect_stderr = true
numprocs = 5
process_name = %(program_name)s%(process_num)s


[program:queue_runner_test]
command = php /path_to_test/artisan queue:work --daemon --queue=default,smsIntTest,smsIntTestLow --tries=1 --timeout=30
stdout_logfile = /path_to_test/storage/logs/supervisor.log
redirect_stderr = true
numprocs = 50
process_name = %(program_name)s%(process_num)s

你能帮我解决它吗。

标签: laravelsupervisordbeanstalkdlaravel-queue

解决方案


找到了我的问题的解决方案。尽管作业从一开始就从 smsIntTest 上的测试站点和 smsInt 队列上的其他站点发送。但是,他们每次都被错误的队列接走。

正如以下帖子所建议的,为什么 Laravel 或 Beanstalkd 会跳过工作?

我在 app/config/queue.php 文件的 'connections' 数组中为一个站点分配了 'queue' => 'smsInt',为另一个站点分配了 'queue' => 'smsIntTest'。这个解决方案解决了这个问题。


推荐阅读