Prerrequisitos
Antes de comenzar este tutorial, primero, complete las siguientes tareas:
- Instalar un nuevo proyecto de Laravel
- Configurar la conexión a la base de datos
- Configure la configuración para enviar los correos electrónicos (puede consultar el tutorial de envío de correos electrónicos para enviar correos electrónicos usando SMTP)
Crear mesa
Debes crear el trabajos tabla en la base de datos para almacenar todas las colas. Ejecute el siguiente comando desde la terminal para crear el archivo de migración para el trabajos mesa.
$ php artisan queue: tablaPuede abrir el archivo de migración desde la ubicación base de datos / migraciones /. El archivo contiene el siguiente contenido.
use Illuminate \ Database \ Migrations \ Migration;use Illuminate \ Database \ Schema \ Blueprint;
use Illuminate \ Support \ Facades \ Schema;
class CreateJobsTable extiende la migración
/ **
* Ejecutar las migraciones.
*
* @return void
* /
función pública arriba ()
Schema :: create ('trabajos', function (Blueprint $ table)
$ tabla-> bigIncrements ('id');
$ tabla-> cadena ('cola') -> índice ();
$ tabla-> longText ('carga útil');
$ tabla-> unsignedTinyInteger ('intentos');
$ tabla-> unsignedInteger ('reservado_at') -> nullable ();
$ tabla-> unsignedInteger ('disponible_en');
$ tabla-> unsignedInteger ('creado_en');
);
/ **
* Revertir las migraciones.
*
* @return void
* /
función pública abajo ()
Schema :: dropIfExists ('trabajos');
Ejecute el siguiente comando desde la terminal para crear el trabajo mesa.
$ php migrar artesanalCrear clase de correo
Debes crear una clase que se pueda enviar por correo para enviar correos electrónicos desde la aplicación Laravel. Ejecute el siguiente comando para crear la clase de correo denominada Enviar correo electrónico en el lugar aplicación / correo.
$ php artisan make: mail SendEmailEl contenido de esta clase se muestra a continuación. El nombre de archivo de la vista que se utiliza en el construir() El método se creará en la siguiente parte de este tutorial.
espacio de nombres App \ Mail;use Illuminate \ Bus \ Queueable;
use Illuminate \ Contracts \ Queue \ ShouldQueue;
use Illuminate \ Mail \ Mailable;
use Illuminate \ Queue \ SerializesModels;
clase SendEmail extiende Mailable
use Queueable, SerializesModels;
/ **
* Crear una nueva instancia de mensaje.
*
* @return void
* /
función pública __construct ()
//
/ **
* Construye el mensaje.
*
* @return $ esto
* /
función pública build ()
/ * Defina el nombre de la vista que se usará para la plantilla de correo electrónico * /
return $ this-> view ('correo electrónico');
Crear vista
Crea el archivo de vista llamado Email.espada.php con el siguiente contenido que se enviará como cuerpo del correo electrónico.
Bienvenido a Linux Hint
Aprende Laravel fácilmente
Crear una clase de trabajo
Ejecute el siguiente comando para crear una clase de trabajo. El nombre de archivo de la clase de trabajo llamado EnviandoEmail.php se creará en la ubicación aplicación / trabajos.
$ php artisan make: job SendingEmailEl contenido de la EnviandoEmail.php se muestra a continuación. Debe establecer una dirección de correo electrónico válida dentro del a() método del resolver() función para probar si el código está funcionando correctamente. Establezca la dirección de correo electrónico válida en lugar de 'Dirección de correo electrónico del destinatario' dentro de a() método para comprobar si la cola está funcionando correctamente.
espacio de nombres App \ Jobs;use Illuminate \ Bus \ Queueable;
use Illuminate \ Contracts \ Queue \ ShouldQueue;
use Illuminate \ Foundation \ Bus \ Dispatchable;
use Illuminate \ Queue \ InteractsWithQueue;
use Illuminate \ Queue \ SerializesModels;
/ * Añadidos los paquetes necesarios * /
usar correo;
use App \ Mail \ SendEmail;
clase SendingEmail implementa ShouldQueue
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/ **
* Crear una nueva instancia de trabajo.
*
* @return void
* /
función pública __construct ()
//
/ **
* Ejecuta el trabajo.
*
* @return void
* /
identificador de función pública ()
/ * Crea el objeto de la clase mailable y envía un correo electrónico * /
$ email = new SendEmail ();
/ * Establecer una dirección de correo electrónico válida * /
Correo :: a ('Dirección de correo electrónico del destinatario') -> enviar ($ correo electrónico);
Crear controlador
Ejecute el siguiente comando para crear un controlador para manejar la cola. Cuando el handleQueue () se ejecuta la función del controlador, el trabajo en cola se enviará y el correo electrónico se enviará.
$ php artisan make: controlador SendEmailControllerSendEmailController.php
espacio de nombres App \ Http \ Controllers;use Illuminate \ Http \ Request;
/ * Agrega los paquetes necesarios * /
use App \ Jobs \ SendingEmail;
use Carbon \ Carbon;
clase SendEmailController extiende Controller
/ **
* Uso de colas de Laravel
* /
función pública handleQueue ()
/ * Empuje el nuevo trabajo en la cola de trabajos * /
despacho (nuevo SendingEmail ());
/ * Imprimir mensaje después de enviar correo electrónico * /
echo 'El correo electrónico ha sido enviado';
Agregar ruta
Abre el web.php archivo de la rutas carpeta y agregue la siguiente ruta para ejecutar el trabajo de cola usando el controlador.
Route :: get ('correo electrónico', '[correo electrónico protegido]');Ejecute la siguiente URL en el navegador para verificar si el código está funcionando. Abra la dirección de correo electrónico del destinatario para comprobar si se ha recibido un nuevo correo electrónico.
http: // localhost: 8000 / emailqueue
Agregar retraso
Abre el EnviandoEmail.php archivo de nuevo y modificar el contenido del handleQueue () función para agregar el retraso de cinco segundos a los trabajos en cola.
espacio de nombres App \ Http \ Controllers;use Illuminate \ Http \ Request;
/ * Agrega los paquetes necesarios * /
use App \ Jobs \ SendingEmail;
use Carbon \ Carbon;
clase SendEmailController extiende Controller
/ **
* Uso de colas de Laravel
* /
función pública handleQueue ()
/ * Crea un nuevo objeto de cola con un retraso de 5 segundos * /
$ emailJob = (new SendingEmail ()) -> delay (Carbon :: ahora () -> addSeconds (5));
/ * Empuje el nuevo trabajo en la cola de trabajos * /
despacho ($ emailJob);
/ * Imprimir mensaje después de enviar correo electrónico * /
echo 'Correo electrónico enviado después de cinco segundos';
Nuevamente, ejecute la siguiente URL en el navegador para verificar si el código está funcionando. Aquí, el correo electrónico se enviará después de cinco segundos, utilizando el método delay () de cinco segundos.
http: // localhost: 8000 / emailqueue
Verifique la bandeja de entrada de la dirección de correo electrónico del destinatario para averiguar si se ha recibido un nuevo correo electrónico después de 5 segundos. Se recibirá un correo electrónico con el siguiente contenido si el trabajo en cola funciona correctamente.
Conclusión
Este tutorial muestra un uso muy simple de la cola de Laravel. Puede usar las colas de Laravel para varios propósitos, según los requisitos de su aplicación. Espero que este tutorial haya ayudado a los lectores a comprender mejor los conceptos básicos de las colas de Laravel.