Я застрял при отправке заданий в несколько очередей SQS с помощью onQueue('queuename')
.
Имена очередей в SQS имеют префиксы для разных проектов.
Кажется, что жесткое кодирование каждого имени очереди SQS — не лучший способ сделать это. Я думаю, что должно быть что-то вроде карты псевдонимов в queue.php
файле конфигурации.
Есть ли известная практика, чтобы справиться с этим должным образом?
По моему опыту, ОЧЕНЬ полезно определить имя очереди как комбинацию Имя среды и Имя очереди проекта.
Используя 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
вы определяете соединение и очередь по умолчанию, но не алиас карты, это было бы весьма полезно, если честно, но пока ничего подобного, насколько я знаю
Улучшено форматирование вопроса для лучшей читабельности