1
resposta

[Dúvida] Falha nos eventos

Boa noite.

1) Sobre o desafio de criar um evento de exclusão de imagem quando a série for excluída, você criou só um evento? Não vi criar o listener na solução proposta.

2) Depois que criei o evento de apagar a imagem:

- Primeiro que ele não apaga a imagem
- Segundo que agora está dando falha no evento de enviar e-mail. Tem como ver o motivo da falha?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Segue meu código: https://github.com/karolinagb/LaravelMvc

OBS: Descobri que está dando erro no mailtrap pq atingiu o limite de e-mails gratuitos, porém estou tentando não executar esse de envio de e-mail para executar só o job da exclusão da imagem, mas também não vai:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Também mudei o método de exclusão lá no listener pra ver se assim vai:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

3) Uma segunda dúvida é que estou confusa do porque eventos precisam da fila rodando.

4) Você tinha deixado o desafio de criar um listener e um evento e agora falou de criar um job. Qual a diferença dos 3? Um listener assyncrono também é um job? Na aula de filhas n lembro de criar um job em si, ele gera sozinho quando é assíncrono?

5) Aqui na linha de comando tem como saber se um determinado job funcionou?

1 resposta

Olá Karolina! Tudo certo?

Peço desculpa pela demora em respondê-la.

1 - Na solução proposta para o desafio de criar um evento de exclusão de imagem, foi criado apenas o evento SerieApagada, mas realmente não foi mostrado o processo de criação do listener. No entanto, para que o evento seja executado corretamente, é necessário criar o listener correspondente. Você pode fazer isso utilizando o comando php artisan make:listener NomeDoListener --event=SerieApagada. Assim, você terá um arquivo NomeDoListener.php na pasta Listeners do seu projeto, onde você poderá definir a lógica que será executada quando o evento for disparado.

2 - Sobre o problema de não apagar a imagem e a falha no evento de enviar e-mail, existem algumas coisas que você pode verificar:

  • Certifique-se de que o caminho da imagem está correto e que você tem permissão para excluí-la;

  • Verifique se o evento de exclusão da imagem está sendo disparado corretamente quando a série é excluída;

  • Verifique se o listener do evento de exclusão da imagem está sendo registrado corretamente;

  • No caso do erro no envio de e-mail, como você mencionou que o Mailtrap atingiu o limite de e-mails gratuitos, é possível que esse seja o motivo da falha. Você pode tentar utilizar outra ferramenta de teste de e-mails, como o MailHog ou o MailCatcher, para verificar se o problema persiste.

3 - Os eventos precisam da fila rodando para poderem ser executados de forma assíncrona, ou seja, em segundo plano, sem bloquear a execução do restante da aplicação. Isso é útil em casos em que o processamento do evento pode levar algum tempo, como o envio de e-mails, por exemplo. Ao colocar o evento na fila, ele será processado posteriormente, permitindo que a aplicação continue sua execução normalmente.

4 - A diferença entre um listener, um evento e um job é a seguinte:

  • Um listener é responsável por "ouvir" um evento específico e executar a lógica associada a ele.

  • Um evento é um evento específico que pode ser disparado em determinadas situações dentro da aplicação.

  • Um job é uma tarefa que pode ser executada de forma assíncrona, ou seja, em segundo plano. Ele pode ser utilizado para processar eventos de forma assíncrona, como no envio de e-mails.

    Um listener assíncrono não é necessariamente um job. Um listener assíncrono pode utilizar a fila para executar sua lógica de forma assíncrona, mas um job é uma tarefa específica que pode ser executada de forma assíncrona, independentemente de ser um listener ou não.

5 - Na linha de comando, você pode verificar se um determinado job funcionou consultando os logs do Laravel. Os logs são geralmente armazenados no arquivo storage/logs/laravel.log. Lá você poderá encontrar informações sobre a execução dos jobs, incluindo possíveis erros ou mensagens de sucesso.

Espero ter ajudado. Caso tenha mais dúvidas relacionadas com esse tópico, estarei à sua disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software