Einfache laravel queue rate limit
3.*-Versionen sind nur mit Laravel 7+ kompatibel.
$ composer require mxl/laravel-queue-rate-limit
Für Laravel 6 verwenden Sie 2.*-Versionen:
$ composer require mxl/laravel-queue-rate-limit " ^2.0 "
Für Laravel 5 verwenden Sie 1.*-Versionen:
$ composer require mxl/laravel-queue-rate-limit " ^1.0 "
Laravel 5.5+ verwendet die automatische Erkennungsfunktion, um MichaelLedinLaravelQueueRateLimitQueueServiceProvider::class
zu Anbietern hinzuzufügen.
Dieses Paket ist nicht mit älteren Laravel-Versionen kompatibel.
Ratenbegrenzungen zu config/queue.php
hinzufügen:
' rateLimits ' => [
' mail ' => [ // queue name
' allows ' => 1 , // 1 job
' every ' => 5 // per 5 seconds
]
]
Stellen Sie sicher, dass Sie beim Einreihen von Aufträgen keine sync
verwenden. Siehe default
in config/queue.php
.
Führen Sie den Warteschlangenarbeiter aus:
$ php artisan queue:work --queue default,mail
Schieben Sie dann mehrere Jobs in die default
und mail
Warteschlangen:
Mail:: queue (..., ' mail ' );
Mail:: queue (..., ' mail ' );
Mail:: queue (..., ' mail ' );
Mail:: queue (..., ' default ' );
Mail:: queue (..., ' default ' );
Sie werden sehen, dass nur mail
Warteschlangenjobs eine Ratenbegrenzung unterliegen, während default
normal ausgeführt werden.
QueueServiceProvider
erweitern:
<?php
namespace App Providers ;
class QueueServiceProvider extends MichaelLedin LaravelQueueRateLimit QueueServiceProvider
{
protected function registerLogger ()
{
$ this -> app -> singleton ( ' queue.logger ' , function () {
return null ;
});
}
}
Fügen Sie es dem providers
-Array in config/app.php
hinzu:
<?php
return [
// ...
' providers ' => [
// Laravel Framework Service Providers
// ...
// Application Service Providers
// ...
App Providers QueueServiceProvider::class,
// ...
]
];
Einzelheiten finden Sie in der LICENSE-Datei.