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