Best laravel framework open-source packages.

Queues laravel

Aprendendo a usar dois recursos do laravel: Queues e Storage
Updated 1 year ago

Queue and storage

Projeto criado com o intuito de aprender como funciona o trabalho com queues em laravel. Em adição, também farei o uso do storage local para salvar fotos.

Storage local

Configuração

  • Criando link simbólico para que seja possível acessar as fotos pela public/
php artisan storage:link

Execução

  • Salvando imagens aleatórias para fim de testes
$fileManager = new App\Models\FileManager(size: 400);
$fileManager->saveRandomPhoto();

Queues

Configuração

  • No arquivo .env mude o valor de QUEUE_CONNECTION para database
  • Executar php artisan queue:work para as filas começarem a trabalhar

Execução

Rota: /save-photo/{size}

Essa rota cairá no Controller FileManager, que por sua vez faz o dispatch do job RandomImage com o delay de 5 segundos

public function savePhoto(Request $request)
{
    RandomImage::dispatch($request->size)->delay(now()->addSecond(5));
}

RandomImage chamará o método saveRandomPhoto da model FileManager passando o size informado na requisição

public function handle(FileManager $fileManager)
{
    $fileManager->saveRandomPhoto($this->size);
}

O método saveRandomPhoto tem como objetivo consumir uma API de geração de fotos aleatórias e salvar a resposta (a imagem) no storage local, na pasta /public

public function saveRandomPhoto(int $size)
{
    $response = $this->client->request('GET', "/{$size}");
    Storage::disk('public')->put(uniqid() . '.jpg', $response->getBody());
}
  • Observação: a propriedade client foi configurada para receber um GuzzleHttp\Client já com a base_uri configurada por meio do AppServiceProvider
$this->app->when(FileManager::class)
    ->needs(Client::class)
    ->give(function () {
        return new Client([
            'base_uri' => 'https://picsum.photos'
        ]);
    });