Queue driver connections en Laravel

Después de un par de días sin escribir, vuelvo a la carga :-)

Laravel tiene un sistema de colas bastante potente. Además, como todo, está bastante abstraído del sistema que utiliza por detrás. ¿Qué quiero decir con esto?

En nuestro fichero .env podemos configurar la conexión de nuestro sistema de colas. Por defecto, podemos usar cualquiera de los siguientes valores:

  • sync: Deshabilita el sistema de colas. Ejecuta los jobs de forma síncrona cuando se llaman en nuestro código.
  • database: Almacena los ítems a procesar de la cola en una tabla de la base de datos. Para poder usarlo, primero hay que ejecutar php artisan queue:table y ejecutar las migraciones.
  • redis: Utiliza Redis para encolar los diferentes jobs. Requiere tener un servidor de Redis instalado en nuestro sistema.

Además, hay otros que podemos utilizar instalando sus dependencias:

  • sqs: Utiliza el Simple Queue System de AWS para la cola. Requiere instalar aws/aws-sdk-php ~3.0.
  • beanstalkd: Utiliza el sistema Beanstalkd, una cola open source rápida y de uso general. Requiere instalar pda/pheanstalk ~4.0

En mi caso, cuando trabajo en local suelo trabajar con las colas en sync salvo algún caso puntual. Sin embargo, en desarrollo suelo utilizar Redis ya que es mucho más fiable que el database driver, ya que no depende de tablas de MySQL ni de la velocidad de la base de datos.