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
On the Horizon
By Nathan Dunn
On the Horizon
- 61