colonel
@colonel
Разработчик PHP, Laravel

В Laravel очереди работают не последовательно в Bus::chain?

Запускаю очереди так:

Bus::chain([
                        new DownloadAudioFile($this->dataMessage['idMessage']),
                        new TranscribeAudio($this->dataMessage['idMessage']),
                    ])->dispatch();


Вторая зависит от первой, и вторая в конструкторе выдавала ошибку, так как первая в handle еще не отработала.

Залогировал поведение, вот что в итоге:

[2024-04-10 11:15:55] local.INFO: This Download constructor  
[2024-04-10 11:15:55] local.INFO: This Transcribe constructor  
[2024-04-10 11:15:55] local.INFO: This Download  
[2024-04-10 11:15:55] local.INFO: This Transcribe


То-есть сначала последовательно вызываются конструкторы, только потом handle обеих очередей.

Как починить?
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
То-есть сначала последовательно вызываются конструкторы, только потом handle обеих очередей.
Ну конечно. Конструктор по определению вызывается ещё до того, как вы что-то в очередь положите - он создаёт сам объект, который ставится в очередь.

Как починить?
Переделывайте зависимости, получайте данные в handle, а не через конструктор, когда их ещё не существует.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы