1
resposta

[Dúvida] Diferença de evento para jobs

Boa noite. Essa explicação me deixou em dúvida sobre a diferença de events para jobs. Parecem ser a mesma coisa. Não entendi a parte que fala que "Normalmente nós utilizamos Jobs para tarefas que são inerentes à regra de negócio que estamos executando. Já eventos usamos para realizar tarefas “extra” (como notificar através de e-mails, realizar logs, etc.)". Poderia explicar melhor com um exemplo de um job que tem haver com regra de negócio e um evento que tem haver com uma tarefa extra?

Outra coisa, esse envio de e-mail, ao invés de um event, não poderia ser um job?

Por fim, você disse que "Repare que esta classe também pode implementar a interface ShouldQueue, ou seja, esse Job pode ser processado de forma assíncrona", eu achei que um job já era assíncrono, foi o que aprendemos na aula sobre filas não?

1 resposta

No Laravel, Events e Jobs são duas formas de lidar com tarefas que devem ser realizadas em segundo plano.

Eventos são usados para notificar outras partes do aplicativo de que algo aconteceu. Eles são úteis para desacoplar diferentes partes do aplicativo e permitir que elas sejam implementadas independentemente umas das outras. Por exemplo, você pode ter um evento que é disparado quando um usuário é criado e, em seguida, ter vários listeners que reagem a esse evento de maneiras diferentes, como enviar um e-mail de boas-vindas ou registrar o usuário em um sistema externo.

Jobs, por outro lado, são usados para realizar tarefas que devem ser realizadas em segundo plano. Eles são úteis para tarefas que podem levar algum tempo para ser concluídas, como enviar e-mails em massa ou processar arquivos de grande tamanho. Jobs são armazenados em uma fila e processados de forma assíncrona, o que significa que eles não bloqueiam a execução do resto do aplicativo enquanto estão sendo processados.

Em resumo, eventos são usados para notificar outras partes do aplicativo de que algo aconteceu e jobs são usados para realizar tarefas em segundo plano que podem ser processadas de forma assíncrona.