On the Horizon

@nathanjdunn

👋

@nathanjdunn

Queueing

Laravel Queue Options

  • Sync
  • Database
  • beanstalkd
  • Amazon SQS
  • Redis

Polls queue for jobs

Queue System (Redis)

Pushes jobs to queue

Worker (Laravel App)

Application (Laravel App)

<?php

namespace App\Http\Controllers;

use App\Jobs\RenderVideo;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class VideosController extends Controller
{
    /**
     * Store a new podcast.
     *
     * @param  Request  $request
     * @return Response
     */
    public function store(Request $request)
    {
        // Render video...

        RenderVideo::dispatch($video);
    }
}
<?php

namespace App\Jobs;

use App\VideoProcessor;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class RenderVideo implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * @var Video
     */
    protected $video;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct(Video $video)
    {
        $this->video = $video;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle(VideoProcessor $processor)
    {
        // Process uploaded video...
    }
}
composer require laravel/horizon

php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"
php artisan horizon
Horizon::auth(function ($request) {
    // return true / false;
});
Horizon::routeMailNotificationsTo('example@example.com');
Horizon::routeSlackNotificationsTo('slack-webhook-url', '#channel');
Horizon::routeSmsNotificationsTo('15556667777');

Live Demo Time

Made with Slides.com