From 4294de1a6d99d4bbc1e7da6f38264fcda064f62e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Fri, 5 Nov 2021 16:22:36 +0100 Subject: [PATCH 1/2] Remove redis queue and composer spatie/laravel-mix-preload in favor of a queue named "stats" with special supervisor conf --- app/Jobs/SetServiceStats.php | 10 ++---- app/Jobs/StartStatJobs.php | 3 +- app/Models/Service.php | 2 +- composer.json | 3 +- composer.lock | 62 +----------------------------------- 5 files changed, 7 insertions(+), 73 deletions(-) diff --git a/app/Jobs/SetServiceStats.php b/app/Jobs/SetServiceStats.php index 0c6b098..f814828 100644 --- a/app/Jobs/SetServiceStats.php +++ b/app/Jobs/SetServiceStats.php @@ -10,7 +10,6 @@ use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\Middleware\WithoutOverlapping; use Illuminate\Queue\SerializesModels; -use Spatie\RateLimitedMiddleware\RateLimited; class SetServiceStats implements ShouldQueue { @@ -19,6 +18,8 @@ class SetServiceStats implements ShouldQueue use Queueable; use SerializesModels; + private const KEY = '2202020'; + // Set high max tries as using prevent overlap public $tries = 40; @@ -64,13 +65,8 @@ class SetServiceStats implements ShouldQueue public function middleware() { - $rateLimitedMiddleware = (new RateLimited()) - ->allow(4) - ->everySeconds(1) - ->releaseAfterSeconds(rand(90, 180)); return [ - $rateLimitedMiddleware, - (new WithoutOverlapping($this->service->id)) + (new WithoutOverlapping(self::KEY)) ->releaseAfter(rand(90, 180)) ]; } diff --git a/app/Jobs/StartStatJobs.php b/app/Jobs/StartStatJobs.php index 3ca6737..280fa7b 100644 --- a/app/Jobs/StartStatJobs.php +++ b/app/Jobs/StartStatJobs.php @@ -19,8 +19,7 @@ class StartStatJobs implements ShouldQueue $brands = Brand::all(); foreach ($brands as $brand) { \dispatch(new StatJob($brand)) - ->onConnection('redis') - ->onQueue('stats')->delay(rand(0, 90)); + ->delay(rand(0, 90)); } } } diff --git a/app/Models/Service.php b/app/Models/Service.php index b914fcd..eaa5106 100644 --- a/app/Models/Service.php +++ b/app/Models/Service.php @@ -150,7 +150,7 @@ class Service extends Model public function incrementStat(): void { SetServiceStats::dispatch($this)->afterResponse() - ->onConnection('redis')->onQueue('stats'); + ->onConnection('database')->onQueue('stats'); } /** diff --git a/composer.json b/composer.json index 6946ebf..dac073b 100644 --- a/composer.json +++ b/composer.json @@ -42,8 +42,7 @@ "league/csv": "^9.7", "propaganistas/laravel-phone": "^4.3", "rennokki/laravel-eloquent-query-cache": "^3.0", - "spatie/laravel-mix-preload": "^1.2", - "spatie/laravel-rate-limited-job-middleware": "^1.5" + "spatie/laravel-mix-preload": "^1.2" }, "require-dev": { "facade/ignition": "^2.5", diff --git a/composer.lock b/composer.lock index e512302..4422dd6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cac9cff057e02f69a5e32aa8ca5174d4", + "content-hash": "b30f8f73c987d9919c31de484b03b3ef", "packages": [ { "name": "arondeparon/laravel-request-sanitizer", @@ -4058,66 +4058,6 @@ ], "time": "2021-01-04T08:01:50+00:00" }, - { - "name": "spatie/laravel-rate-limited-job-middleware", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-rate-limited-job-middleware.git", - "reference": "7b72592e0d823e2948c413f5e661de0fd3431db5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-rate-limited-job-middleware/zipball/7b72592e0d823e2948c413f5e661de0fd3431db5", - "reference": "7b72592e0d823e2948c413f5e661de0fd3431db5", - "shasum": "" - }, - "require": { - "illuminate/redis": "^6.0|^7.0|^8.0", - "php": "^7.3|^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.4", - "orchestra/testbench": "^4.0|^5.0|^6.0", - "phpunit/phpunit": "^8.2|^9.0", - "symfony/var-dumper": "^4.3|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\RateLimitedMiddleware\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "A middleware that can rate limit jobs", - "homepage": "https://github.com/spatie/laravel-rate-limited-job-middleware", - "keywords": [ - "laravel-rate-limited-job-middleware", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/laravel-rate-limited-job-middleware/issues", - "source": "https://github.com/spatie/laravel-rate-limited-job-middleware/tree/1.5.0" - }, - "funding": [ - { - "url": "https://www.patreon.com/spatie", - "type": "patreon" - } - ], - "time": "2020-11-27T09:36:55+00:00" - }, { "name": "swiftmailer/swiftmailer", "version": "v6.2.7", From 22d3cf00829849fa607f62c62cf8bc845a2b92e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Fri, 5 Nov 2021 16:23:01 +0100 Subject: [PATCH 2/2] Fix repair_stats_jobs migration not deleting jobs --- database/migrations/2021_10_29_160416_repair_stats_jobs.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/database/migrations/2021_10_29_160416_repair_stats_jobs.php b/database/migrations/2021_10_29_160416_repair_stats_jobs.php index ac46b63..11d9b00 100644 --- a/database/migrations/2021_10_29_160416_repair_stats_jobs.php +++ b/database/migrations/2021_10_29_160416_repair_stats_jobs.php @@ -25,6 +25,8 @@ class RepairStatsJobs extends Migration foreach ($jobs as $job) { $payload = json_decode($job->payload); if ($payload->displayName === SetServiceStats::class) { + $jobIDS[] = $job->id; + $ref = new ReflectionProperty(SetServiceStats::class, 'service'); $ref->setAccessible(true); $service = $ref->getValue(unserialize($payload->data->command));