Posted on: June 24, 2020 07:24 PM
Posted by: Renato
Categories: Laravel
Views: 2894
Anote as conexões vs. Filas nota na documentação fila de Laravel , que se aplica a todas as filas motoristas além da SQS, tanto quanto eu estou ciente.
Antes de iniciar as filas do Laravel, é importante entender a distinção entre "conexões" e "filas". No seu arquivo de configuração config / queue.php, há uma opção de configuração de conexões. Essa opção define uma conexão específica com um serviço de back-end, como Amazon SQS, Beanstalk ou Redis. No entanto, qualquer conexão de fila especificada pode ter várias "filas", que podem ser consideradas pilhas ou pilhas diferentes de trabalhos em fila.
Observe que cada exemplo de configuração de conexão no arquivo de configuração da fila contém um atributo da fila. Essa é a fila padrão para a qual os trabalhos serão despachados quando forem enviados para uma determinada conexão. Em outras palavras, se você despachar um trabalho sem definir explicitamente para qual fila ele deve ser despachado, o trabalho será colocado na fila definida no atributo de fila da configuração da conexão:
Com efeito, você registrará uma conexão de fila no seu config/queues.phparquivo e o defaultparâmetro será simplesmente a fila para a qual os trabalhos são despachados por padrão, se outra fila não for fornecida.
A resposta de Vitaly acima seria a abordagem correta para o problema (consolide em uma única conexão com uma fila padrão) e ajuste seus trabalhos para serem enviados para filas diferentes, se necessário. Este é um contexto importante (eu acho) importante de como funciona a configuração da fila.
```
'connections' => [
'Register' => [ //
'driver' => 'database',
'table' => 'tbljobs',
'queue' => 'low', //
'retry_after' => 5,
],
],
```
Sugiro que você modifique seu código da seguinte maneira:
```
'connections' => [
'Register' => [
'driver' => 'database',
'table' => 'tbljobs',
'queue' => 'default',
'retry_after' => 5,
],
],
```
Trabalho de alta prioridade - Código do controlador para e-mail de registro
```
$job = (new SendActivationEmail($Data))
->onConnection('Register')
->onQueue("high");
dispatch($job);
```
Trabalho de prioridade média - Código do controlador para redefinir senha
```
$job = (new SendResetPasswordEmail($this->tokens->create($user), $user))
->onConnection('Register')
->onQueue("medium");
dispatch($job);
```
Trabalho de baixa prioridade
```
dispatch((new LowPriorityJob())->onQueue("low"));
```
Trabalho prioritário padrão
```
dispatch((new DefaultPriorityJob()));
-> onConnection ('Register') // esta linha é útil se você especificar que a conexão padrão é Register in .env QUEUE_DRIVER = Register
```
## Execute seus trabalhos
este comando executa seus trabalhos armazenados na conexão padrão. No seu caso Registre-se
php artisan queue:work --queue=high,medium,low,default
este comando executa seus trabalhos armazenados na conexão customConnectionName
```
php artisan queue:work customConnectionName --queue=high,medium,low,default
```
**********************************************************************************************************************
Você deve ter duas filas definidas no seu config/queue.phparquivo. Digamos, um com o nome "alto" e o outro "baixo".
Em seguida, você pode enviar tarefas para eles conforme necessário, da seguinte maneira:
```
$job = (new SendResetPasswordEmail($this->tokens->create($user), $user))
->onConnection('ForgotPassword');
dispatch($job)->onQueue('high'));
```
Nota: ->onQueue('high')
Por fim, você executaria: php artisan queue:work --queue=high,low
Isso iniciará um trabalhador que processará todos os trabalhos na fila "alta" antes de passar para trabalhos em "baixo".
Donate to Site
Renato
Developer