我坚持使用onQueue('queuename')
将作业分配到多个SQS队列中。
SQS上的队列名称具有不同项目的前缀。
似乎很难对SQS的每个队列名称进行硬编码。我认为queue.php
配置文件中应该有一个别名映射。
是否存在已知的方法来正确处理?
答案 0 :(得分:1)
根据我的经验,将队列名称定义为环境名称和项目队列名称
的组合非常有用我使用CloudFormation创建队列,
QueueName:
Type: AWS::SQS::Queue
Properties:
VisibilityTimeout: 120
QueueName: !Join ['', [!Ref 'AWS::StackName', 'ProjectQueueName']]
Tags:
- Key: Stack
Value: !Ref 'AWS::StackName'
通过这种方式,只要您要在队列中推送某些内容,您就可以这样做
MyJob::dispatch($payload)->onQueue(env('APP_ENV').'ProjectQueueName');
或者,如果您也想在.env
文件中定义队列名称,
MyJob::dispatch($payload)->onQueue(env('APP_ENV').env('ProjectQueueName'));
为了更加精确一点,在queue.php
中,您定义了连接和默认队列,但是没有映射别名,说实话,这将是非常有用的,但是还没有类似的东西,据我所知