usoft-packagist / laravel-queue-rate-limit
Simple Laravel queue rate limiting
Requires
- php: ^7.3||^8.0
- illuminate/cache: ^7.0||^8.0||^9.0|^10.0
- illuminate/contracts: ^7.0||^8.0||^9.0|^10.0
- illuminate/log: ^7.0||^8.0||^9.0|^10.0
- illuminate/queue: ^7.0||^8.0||^9.0|^10.0
Requires (Dev)
- phpunit/phpunit: ^7.5||^8.0||^9.0
This package is auto-updated.
Last update: 2024-10-30 01:26:42 UTC
README
Simple Laravel queue rate limiting
Installation
3.* versions are compatible only with Laravel 7+.
$ composer require mxl/laravel-queue-rate-limit
For Laravel 6 use 2.* versions:
$ composer require mxl/laravel-queue-rate-limit "^2.0"
For Laravel 5 use 1.* versions:
$ composer require mxl/laravel-queue-rate-limit "^1.0"
Laravel 5.5+ will use the auto-discovery feature to add MichaelLedin\LaravelQueueRateLimit\QueueServiceProvider::class
to providers.
This package is not compatible with older Laravel versions.
Add rate limits to config/queue.php
:
'rateLimits' => [ 'mail' => [ // queue name 'allows' => 1, // 1 job 'every' => 5 // per 5 seconds ] ]
Usage
Make sure that you don't use sync
connection when queueing jobs. See default
property in config/queue.php
.
Run queue worker:
$ php artisan queue:work --queue default,mail
Then push several jobs to default
and mail
queues:
Mail::queue(..., 'mail'); Mail::queue(..., 'mail'); Mail::queue(..., 'mail'); Mail::queue(..., 'default'); Mail::queue(..., 'default');
You'll see that only mail
queue jobs will be rate limited while default
queue jobs will run normally.
Disable logging
Extend QueueServiceProvider
:
<?php namespace App\Providers; class QueueServiceProvider extends \MichaelLedin\LaravelQueueRateLimit\QueueServiceProvider { protected function registerLogger() { $this->app->singleton('queue.logger', function () { return null; }); } }
Add it to providers
array in config/app.php
:
<?php return [ // ... 'providers' => [ // Laravel Framework Service Providers // ... // Application Service Providers // ... App\Providers\QueueServiceProvider::class, // ... ] ];
Maintainers
Other useful Laravel packages from the author
- mxl/laravel-api-key - API Key Authorization for Laravel with replay attack prevention;
- mxl/laravel-job - dispatch a job from command line and more;
License
See the LICENSE file for details.