У меня есть две разные очереди 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
Не могли бы вы помочь мне решить эту проблему.
Доработайте "другая очередь тоже мешает", пожалуйста
Для первого задания я использую "smsInt,smsIntLow" эти две очереди, а для второго "smsIntTest,smsIntTestLow" это очереди. Должен ли я удалить значение по умолчанию из них? @dparoli
да, у меня на сайте 5 воркеров, у каждого только одна очередь. Попробуйте удалить также дефолт.
Другие очереди также мешают, значит, SmsInt и SmsIntLow объединены в цепочку для программы queue_runner, а SmsIntTest и SmsInTesttLow связаны вместе для программы queue_runner_test. Для задания "queue_runner" выполняется smsInt -> smsIntTest вместо smsInt->smsIntLow.
Попробовал ваше предложение @dparoli. Но, не мог заставить это работать.






Нашел решение своей проблемы. Хотя задания отправлялись с тестового сайта на smsIntTest и с другого сайта на очереди smsInt с самого начала. Но каждый раз их забирали из неправильных очередей.
Как было предложено в следующем посте, Почему Laravel или Beanstalkd пропускают задания?
Я назначил 'queue' => 'smsInt' в массиве 'connections' файла app/config/queue.php для одного сайта и 'queue' => 'smsIntTest' для другого. Это решение решило проблему.
Попробуйте использовать только очередь для каждого работника, пожалуйста.