Как запускать разные очереди 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

Не могли бы вы помочь мне решить эту проблему.

Попробуйте использовать только очередь для каждого работника, пожалуйста.

dparoli 19.02.2019 11:00

Доработайте "другая очередь тоже мешает", пожалуйста

Styx 19.02.2019 11:02

Для первого задания я использую "smsInt,smsIntLow" эти две очереди, а для второго "smsIntTest,smsIntTestLow" это очереди. Должен ли я удалить значение по умолчанию из них? @dparoli

G. Basu 19.02.2019 11:09

да, у меня на сайте 5 воркеров, у каждого только одна очередь. Попробуйте удалить также дефолт.

dparoli 19.02.2019 11:12

Другие очереди также мешают, значит, SmsInt и SmsIntLow объединены в цепочку для программы queue_runner, а SmsIntTest и SmsInTesttLow связаны вместе для программы queue_runner_test. Для задания "queue_runner" выполняется smsInt -> smsIntTest вместо smsInt->smsIntLow.

G. Basu 19.02.2019 11:13

Попробовал ваше предложение @dparoli. Но, не мог заставить это работать.

G. Basu 19.02.2019 11:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
6
337
1

Ответы 1

Нашел решение своей проблемы. Хотя задания отправлялись с тестового сайта на smsIntTest и с другого сайта на очереди smsInt с самого начала. Но каждый раз их забирали из неправильных очередей.

Как было предложено в следующем посте, Почему Laravel или Beanstalkd пропускают задания?

Я назначил 'queue' => 'smsInt' в массиве 'connections' файла app/config/queue.php для одного сайта и 'queue' => 'smsIntTest' для другого. Это решение решило проблему.

Другие вопросы по теме