slogan3

Integreer Laravel Horizon voor Geavanceerd Queue Management

description

Met deze prompt kan de gebruiker Laravel Horizon effectief inzetten om hun queue management te verbeteren, waardoor ze beter inzicht krijgen in job verwerking, sneller kunnen reageren op fouten en de prestaties van asynchrone taken kunnen optimaliseren. Dit biedt een gebruiksvriendelijk dashboard en waarschuwingsmechanismen die alternatieve methoden niet standaard bieden.

prompt

Help me Laravel Horizon te integreren voor het beheren en monitoren van mijn queues. Ik wil configuratie-instructies voor <specifieke queue drivers of configuraties>, uitleg over het dashbo ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een uitgebreide gids voor het integreren van Laravel Horizon in je project, inclusief Redis-configuratie, dashboardgebruik, waarschuwingen en optimalisatie voor e-mailverwerking. **1. Laravel Horizon installeren en configureren** a. Installeer Horizon via Composer: ```bash composer require laravel/horizon ``` b. Publiceer de configuratie en assets: ```bash php artisan horizon:install ``` c. Voer de migraties uit: ```bash php artisan migrate ``` d. Voeg Horizon toe aan je `config/app.php` (voor Laravel 8+ wordt dit meestal niet meer nodig, aangezien het automatisch wordt geladen). **2. Redis instellen voor Horizon** a. Controleer je Redis-configuratie in `config/database.php` onder de `redis` sectie. Voorbeeld: ```php 'redis' => [ 'client' => env('REDIS_CLIENT', 'phpredis'), // of 'predis' 'default' => [ 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => env('REDIS_DB', 0), ], ], ``` b. Zorg dat Redis draait op je server. **3. Horizon dashboard gebruiken** a. Start Horizon met: ```bash php artisan horizon ``` b. Toegang tot het dashboard via: ``` http://je-domein.nl/horizon ``` c. In het dashboard kun je: - Queue status bekijken - Job-gegevens monitoren - Verwerkingstijden en doorvoer analyseren - Jobs handmatig herstarten of verwijderen **4. Waarschuwingen en falende jobs monitoren** a. Laravel Horizon biedt standaard monitoring voor falende jobs. Je kunt de falende jobs bekijken via het dashboard onder "Failed Jobs". b. Om notificaties te ontvangen, kun je Laravel's mail- of Slack-notificaties gebruiken bij falende jobs: In `app/Exceptions/Handler.php`, voeg toe: ```php public function report(Throwable $exception) { if ($exception instanceof \Illuminate\Queue\Jobs\FailedJob) { // Stuur een mail of slack bericht } parent::report($exception); } ``` Alternatief kun je gebruik maken van Laravel's `Failed` event: ```php use Illuminate\Queue\Events\JobFailed; Event::listen(JobFailed::class, function (JobFailed $event) { // Verzend notificatie }); ``` **5. Optimaliseren van queue workers voor E-mailverzending** a. Gebruik meerdere workers en configuraties op basis van de workload: In `config/horizon.php`, bijvoorbeeld: ```php 'environments' => [ 'production' => [ 'supervisor-1' => [ 'connection' => 'redis', 'queue' => ['emails'], 'balance' => 'simple', 'processes' => 5, 'tries' => 3, ], ], ], ``` b. Specifieke queue voor e-mails: - Plaats e-mailjobs in de `emails` queue: ```php Mail::to($user)->queue(new WelkomMail($user)); ``` c. Gebruik `php artisan horizon` om meerdere processen te laten draaien, zodat e-mails parallel kunnen worden verzonden. d. Overweeg het gebruik van `batch` processing voor grote verzendingen: ```php Bus::batch([ new SendEmailJob($user1), new SendEmailJob($user2), // ... ])->dispatch(); ``` e. Stel de `tries` parameter in op 3 of meer, afhankelijk van de betrouwbaarheid van je e-mailserver. --- **Samenvatting:** - Installeer Horizon en configureer Redis. - Gebruik het dashboard voor monitoring. - Stel notificaties in bij falende jobs. - Optimaliseer workers door passende `processes`, `queue` en `tries` te gebruiken, vooral voor e-mailverzending. Mocht je verdere hulp nodig hebben met specifieke configuraties of codevoorbeelden, laat het gerust weten!
provider: deepseek
model: deepseek-chat
Hier is een uitgebreide handleiding voor Laravel Horizon integratie: ## Redis Configuratie **1. Installeer Redis Server:** ```bash sudo apt-get install redis-server # of via Homebrew (macOS): brew install redis ``` **2. Installeer PHP Redis extensie:** ```bash pecl install redis # of voor Ubuntu: sudo apt-get install php-redis ``` **3. Configureer .env bestand:** ```env REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 QUEUE_CONNECTION=redis ``` **4. Configuratie in config/database.php:** ```php 'redis' => [ 'client' => env('REDIS_CLIENT', 'phpredis'), 'options' => [ 'cluster' => env('REDIS_CLUSTER', 'redis'), 'prefix' => env('REDIS_PREFIX', 'laravel_database_'), ], 'default' => [ 'url' => env('REDIS_URL'), 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', '6379'), 'database' => env('REDIS_DB', '0'), ], 'horizon' => [ 'url' => env('REDIS_URL'), 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', '6379'), 'database' => env('REDIS_HORIZON_DB', '1'), ], ], ``` ## Horizon Installatie & Configuratie **1. Installeer Horizon:** ```bash composer require laravel/horizon ``` **2. Publiceer assets:** ```bash php artisan horizon:install php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider" ``` **3. Configureer config/horizon.php:** ```php 'environments' => [ 'production' => [ 'supervisor-1' => [ 'connection' => 'redis', 'queue' => ['default', 'emails'], 'balance' => 'auto', 'processes' => 10, 'tries' => 3, 'timeout' => 60, ], ], 'local' => [ 'supervisor-1' => [ 'connection' => 'redis', 'queue' => ['default', 'emails'], 'balance' => 'simple', 'processes' => 3, 'tries' => 3, 'timeout' => 60, ], ], ], ``` ## Dashboard Gebruik **Toegang tot dashboard:** - Bezoek `/horizon` in je browser - Toont real-time queue metrics - Toont failed jobs, wachtende jobs, en verwerkte jobs - Toont worker status en geheugengebruik **Belangrijke functies:** - **Metrics**: Live statistieken over queue performance - **Failed Jobs**: Gedetailleerde informatie over mislukte jobs - **Jobs**: Overzicht van alle jobs per queue - **Supervisors**: Status van alle worker processes ## Waarschuwingen voor Falende Jobs **1. Configureer notificaties in config/horizon.php:** ```php 'sms' => env('HORIZON_SMS', null), 'slack' => env('HORIZON_SLACK_WEBHOOK_URL'), 'notifications' => [ 'queue' => 'slack', ], 'email' => 'your-email@example.com', ``` **2. Voorbeeld Slack notificatie:** ```php 'environments' => [ 'production' => [ 'supervisor-1' => [ 'notifications' => [ 'failed' => true, 'wait' => 60, // seconden wachten voor notificatie ], ], ], ], ``` **3. Custom notificatie handler:** ```php // In AppServiceProvider boot method Horizon::routeSlackNotificationsTo('https://hooks.slack.com/services/...', '#queue-errors'); ``` ## Optimalisatie voor E-mailverzending **1. Specifieke email queue configuratie:** ```php 'environments' => [ 'production' => [ 'email-supervisor' => [ 'connection' => 'redis', 'queue' => ['emails'], 'balance' => 'auto', 'processes' => 5, 'tries' => 3, 'timeout' => 30, 'memory' => 128, 'max_jobs' => 1000, ], ], ], ``` **2. Email job voorbeeld:** ```php <?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Mail; use App\Mail\WelcomeEmail; class SendWelcomeEmail implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public $user; public function __construct($user) { $this->user = $user; $this->onQueue('emails'); } public function handle() { Mail::to($this->user->email) ->send(new WelcomeEmail($this->user)); } } ``` **3. Queue aanroep:** ```php SendWelcomeEmail::dispatch($user)->onQueue('emails'); ``` ## Horizon Commands **Starten en monitoren:** ```bash # Start Horizon php artisan horizon # Start in production mode php artisan horizon --env=production # Monitor status php artisan horizon:status # Pause/resume php artisan horizon:pause php artisan horizon:continue # Terminate php artisan horizon:terminate ``` **Supervisor configuratie voor productie:** ```bash # /etc/supervisor/conf.d/horizon.conf [program:horizon] process_name=%(program_name)s command=php /path/to/artisan horizon autostart=true autorestart=true user=forge redirect_stderr=true stdout_logfile=/path/to/horizon.log ``` Met deze configuratie heb je een geoptimaliseerd queue systeem voor e-mailverzending met monitoring en waarschuwingsfunctionaliteit.