Laravel и несколько очередей (AWS SQS) - PullRequest
1 голос
/ 28 мая 2019

Я застрял при отправке заданий в несколько очередей SQS, используя onQueue('queuename').

Имена очередей в SQS имеют префиксы для отдельных проектов. Кажется, что жесткое кодирование каждого имени очереди SQS - не лучший способ сделать это. Я думаю, что в конфигурационном файле queue.php должно быть что-то вроде карты псевдонимов.

Есть ли известная практика, чтобы правильно с этим справляться?

1 Ответ

1 голос
/ 28 мая 2019

По моему опыту ОЧЕНЬ полезно определить имя очереди как комбинацию Имя среды и Имя очереди проекта

Используя 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 вы определяете соединение и очередь по умолчанию, но нет псевдонима карты, что было бы весьма полезно, если честно, но пока ничего такого нет, так как насколько я знаю

...