From 286d28140b6e74754125a8256e5149130dcc7f6e Mon Sep 17 00:00:00 2001 From: "iVampireSP.com" Date: Tue, 17 Jan 2023 12:39:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=20=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Jobs/WorkOrder/PushWorkOrderJob.php | 34 +++++++++++++------------ 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/app/Jobs/WorkOrder/PushWorkOrderJob.php b/app/Jobs/WorkOrder/PushWorkOrderJob.php index 0d0a938..8b9741d 100644 --- a/app/Jobs/WorkOrder/PushWorkOrderJob.php +++ b/app/Jobs/WorkOrder/PushWorkOrderJob.php @@ -5,9 +5,9 @@ use App\Models\WorkOrder\WorkOrder; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; +use Illuminate\Http\Client\RequestException; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; -use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Log; // use Illuminate\Contracts\Queue\ShouldBeUnique; @@ -34,7 +34,7 @@ public function __construct() public function handle(): void { // - (new WorkOrder)->whereIn('status', ['pending', 'error'])->with(['module', 'user', 'host', 'replies'])->chunk(100, function ($workOrders) { + (new WorkOrder)->whereIn('status', ['pending'])->with(['module', 'user', 'host', 'replies'])->chunk(100, function ($workOrders) { foreach ($workOrders as $workOrder) { if ($workOrder->host) { @@ -45,28 +45,30 @@ public function handle(): void if ($workOrder->status === 'error') { - // 如果超过 3 次错误,使用 Redis - $count = Cache::get('work_order_error_count_' . $workOrder->id, 0); - if ($count > 3) { - $workOrder->delete(); - continue; - } else { - Cache::increment('work_order_error_count_' . $workOrder->id); - } + continue; } $workOrder->status = 'open'; - $response = $workOrder->module->http()->post('work-orders', $workOrder->toArray()); - if (!$response->successful()) { - Log::error('推送工单失败', [ - 'work_order_id' => $workOrder->id, - 'response' => $response->body(), - ]); + $success = false; + + try { + $response = $workOrder->module->http()->retry(3, 100)->post('work-orders', $workOrder->toArray()); + + if (!$response->successful()) { + Log::warning('推送工单失败', [ + 'work_order_id' => $workOrder->id, + 'response' => $response->body(), + ]); + $workOrder->status = 'error'; + } + } catch (RequestException $e) { + Log::warning($e->getMessage()); $workOrder->status = 'error'; } + $workOrder->save(); }