Я использую enqueue-dev + messenger-enqueue-transport в symfony 4.3 (где у меня несколько окружений (.env)) с beanstalk.
Как мне настроить его так, чтобы задания из разных Окружающая среда не смешивается в одной и той же очереди? (поскольку сервер beanstalk один и тот же)
Я запускаю задания каждой среды, используя:
APP_ENV=qa bin/console messenger:consume beanstalk -vvv
APP_ENV=production bin/console messenger:consume beanstalk -vvv
Когда я использовал pheanstalk без Smyfony, я просто добавил суффикс к имени задания, но в symfony задания задаются с использованием классов:
$message = new ReportMessage($reportUrl);
$this->bus->dispatch((new Envelope($message))->with(new DelayStamp(1000)));
(моя старая реализация):
$this->pheanstalk->useTube(JOB_REPORT_MESSAGE . APP_ENV)->put(json_encode($data));
Я пробовал: config/packages/enqueue.yaml
:
enqueue:
default:
transport: '%env(resolve:ENQUEUE_DSN)%'
client:
router_topic: QA
config/packages/messenger.yaml
:
framework:
messenger:
transports:
beanstalk: enqueue://default?topic[name]=QA
А также: config/packages/enqueue.yaml
:
enqueue:
default:
transport: '%env(resolve:ENQUEUE_DSN)%'
client:
default_queue: QA
router_queue: QA
config/packages/messenger.yaml
:
framework:
messenger:
transports:
beanstalk: enqueue://default?queue[name]=QA
Но тогда никакие сообщения не потребляются мессенджер: потреблять
.