Jonathan Fontes

Laravel Horizon

16 de February de 2018

Primeira tentativa de experimentar o Laravel Horizon, na documentação refere que é um dashboard e "code-driven" com ajuda das Queues da Redis.

Horizon

Configuração

A primeira tarefa é instalar o Laravel + Redis. Como costumo usar o docker + docker-compose, esta tarefa torna-se painless.

$ composer create-project --prefer-dist laravel/laravel dush-app  

Depois instalado, configuro o meu docker-compose.yml. O meu docker corre dentro da pasta "application", tive que fazer algumas alterações a organização das pastas, nada que o shell não consiga ajudar.

dush-app/
 |_ application/
 |_ docker-compose.yml

E o meu docker-compose tem esta configuração:

version: "2"
services:
  web:
    container_name: dush-app.apache
    image: gravatalonga/docker-apache2laravel
    ports:
      - "80:80"
    volumes:
      - ./application:/opt/application
    links:
      - php

  php:
    container_name: dush-app.php
    image: gravatalonga/docker-php7.0
    ports:
      - "9001:9001"
      - "22:22"
    volumes:
      - ./application:/opt/application
    links:
      - db
      - redis
      - mailhog

  db:
    container_name: dush-app.maria
    image: mariadb
    ports:
      - "3306:3306"
    volumes:
      - ./.database:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=control

  redis:
    container_name: dush-app.redis
    image: redis
    ports:
      - "6379:6379"

  mailhog:
    container_name: dush-app.mailhog
    image: mailhog/mailhog
    ports:
      - "1025:1025"
      - "8025:8025"

Instalar Horizon

Segundo a documentação do Horizon, devemos primeiro instalar umas dependências.

composer require laravel/horizon

Com as dependência no sitiu, vamos publicar os assets,

php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"

Configurar Horizon

Agora vamos fazer magia, vamos os queues e os works, vamos trabalhar no localhost portanto não vamos instalar supervisord.

No ficheiro .env

QUEUE_DRIVER=redis

REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379

No ficheiro application/config/horizon.php, vamos colocar o seguinte:

'supervisor-1' => [
    'connection' => 'redis',
    'queue' => ['default'],
    'balance' => 'simple',
    'processes' => 3,
    'tries' => 3,
],

Depois isto temos começar arrancar o software, primeiro as queues e depois o horizon:

php artisan queue:listen   
php artisan horizon  

Com isto, já conseguimos aceder no url http://localhost/dashboard e vemos o seguinte:

Laravel Horizon

Testar as Queues

Depois criar uns jobs e fazer dispatch de alguns jobs. O resultado é espantoso.

LaravelHorizon

Código fonte:
Dispatch do Job

Job

I don't know why all developer say, "Proudly Hosted by DigitalOcean".

© 2017 · 2018