Symfony-信封的多环境支持

问题描述 投票:0回答:1

我正在使用带有beantalk的symfony 4.3(其中我有多个环境(.env))中的enqueue-dev + messenger-enqueue-transport。

我应该如何设置它,以使来自不同环境的作业不会混杂在同一队列中? (因为beantalk服务器是相同的)

我使用以下命令运行每个环境的作业:

APP_ENV=qa bin/console messenger:consume beanstalk -vvv
APP_ENV=production bin/console messenger:consume beanstalk -vvv

[当我在没有Smyfony的情况下使用pheanstalk时,我只是在作业名称上添加了后缀,但是在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

但是,messenger:consume不会消耗任何消息。

symfony symfony4 symfony-4.3 enqueue
1个回答
0
投票

必须同时设置队列和主题:

config / packages / enqueue.yaml:

enqueue:
    default:
        transport: '%env(resolve:ENQUEUE_DSN)%'
        client:
            default_queue: QA
            router_queue: QA
            router_topic: QA

config / packages / messenger.yaml:

framework:
   messenger:
    transports:
        beanstalk: enqueue://default?queue[name]=QA&topic[name]=QA
© www.soinside.com 2019 - 2024. All rights reserved.