Laravel 和多个队列 (AWS SQS)

Laravel and multiple queues (AWS SQS)

我一直坚持使用 onQueue('queuename') 将作业分派到多个 SQS 队列。

SQS 上的队列名称具有不同项目的前缀。 似乎对 SQS 的每个队列名称进行硬编码并不是最好的方法。我认为 queue.php 配置文件中应该有类似别名映射的东西。

是否有正确处理该问题的已知做法?

根据我的经验,将队列名称定义为 环境名称项目队列名称[=15= 的组合非常有用]

我使用 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 中定义连接和默认队列,但没有映射别名,老实说,这会很有用,但没有什么比据我所知