Redis Queue
[Concluído]
Olá Carlos,
Sobre o uso do Redis em Queue.
Estou usando Laravel 9 com setup Docker sugerido no curso.
Criei um Job “App\Jobs\DailyReportJob” que chama um arquivo “App\Mail\DailyReport”.
No arquivo “.env” quando a variável esta definida com “QUEUE_CONNECTION=database” ao rodar “php artisan queue:work” funciona sem problemas. Porém ao definir com REDIS (“QUEUE_CONNECTION=redis”) não funciona, ou seja, não envia o e-mail e também não aparece erros.
Como não tenho experiência no uso do redis em filas estou confuso.
Notei que na tabela “jobs ou failed_jobs” não aparece o registro quando uso redis. Isso é normal?
Rota: http://localhost:8989/email-test
Github: https://github.com/robertotnoya/curso-laravel-9
Agradeço costumeiro apoio.
Olá, Roberto!
Tudo bem?
O container do redis, está up?
docker-compose ps
Sim. esta
Inclusive eu uso o redis para cache e session
especializati-laravel-9 docker-php-entrypoint php-fpm Up 9000/tcp
especializati-mysql docker-entrypoint.sh mysqld Up 0.0.0.0:3388->3306/tcp, 33060/tcp
especializati-nginx /docker-entrypoint.sh ngin ... Up 0.0.0.0:8989->80/tcp
especializati-queue docker-php-entrypoint php ... Up 9000/tcp
especializati-redis docker-entrypoint.sh redis ... Up 6379/tcp
Reinicia o container de filas, e tente novamente:
docker-compose restart queue
Ola Carlos,
A queue com Redis está funcionando agora. Entretanto, nāo estou conseguindo passar variaveis para VIEW do JOB
Quando eu crio uma View sem variáveis o email é enviado com sucesso.
Na tabela failed_jobs aparece o erro:
ErrorException: Trying to access array offset on value of type null ...
Eu fiz um outro teste onde eu envio o email diretamente da rota passando as variaveis e o email é enviado com sucesso!
Arquivo de rota: https://github.com/robertotnoya/curso-laravel-9/blob/main/routes/web.php
Eu criei uma rota simples só para teste:
No arquivo DayliReportJob eu trato:
}
No arquivo DailyReport
Agora as filas estão ok, certo?
---
Sobre o novo problema, posta o código no GitHub por favor;
Ja esta no github
https://github.com/especializati/curso-laravel-9
Você enviou o meu próprio repositório do GitHub hehehehe
Mas, tinha o repo nas respostas anteriores
---
Uma sugestão, no JOB DailyReportJob trabalhe com uma tipagem mais forte:
private array $details;
public function __construct(array $details)
{
$this->details = $details;
}
Com PHP 8 pode reduzir esse código a isso:
public function __construct(
private array $details,
) {}
---
Faça um debug no seu método handle do seu job:
dd($this->details);
Oi Carlos,
Ao tipificar a variavel $details "public function __construct(array $details)" no metodo construtor do JOB e dubuga-lo apareceu:
robertonoya@MacBook-Pro-de-Roberto laravel9 % docker-compose exec app bash
roberto@9205350cb930:/var/www$ php artisan queue:work
[2022-06-22 12:33:34][prBXv7TqN0b5QEyA13EwPIGUTrf2Agia] Processing: App\Jobs\DailyReportJob
^ array:2 [
"email" => "[email protected]"
"name" => "Roberto Noya"
]
Na sequencia eu rodei o Job e FUNCIONOU!
Muito Obrigado!
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!