fixed JobShouldQueue source_name issue..

This commit is contained in:
Cüneyt Şentürk 2022-02-15 13:20:07 +03:00
parent 951ca29215
commit 76e9eb39be
5 changed files with 39 additions and 8 deletions

View File

@ -12,10 +12,10 @@ use App\Traits\Jobs;
use App\Traits\Relationships; use App\Traits\Relationships;
use App\Traits\Sources; use App\Traits\Sources;
use App\Traits\Uploads; use App\Traits\Uploads;
use App\Utilities\QueueCollection;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Collection;
use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
@ -48,7 +48,7 @@ abstract class JobShouldQueue implements ShouldQueue
} }
$request = $this->getRequestInstance($arguments[0]); $request = $this->getRequestInstance($arguments[0]);
if ($request instanceof Collection) { if ($request instanceof QueueCollection) {
$this->request = $request; $this->request = $request;
} }
@ -72,7 +72,7 @@ abstract class JobShouldQueue implements ShouldQueue
} }
$request = $this->getRequestInstance($arguments[1]); $request = $this->getRequestInstance($arguments[1]);
if ($request instanceof Collection) { if ($request instanceof QueueCollection) {
$this->request = $request; $this->request = $request;
} }
} }
@ -110,7 +110,7 @@ abstract class JobShouldQueue implements ShouldQueue
* Covert the request to collection. * Covert the request to collection.
* *
* @param mixed $request * @param mixed $request
* @return \Illuminate\Support\Collection * @return \App\Utilities\QueueCollection
*/ */
public function getRequestAsCollection($request) public function getRequestAsCollection($request)
{ {
@ -122,12 +122,12 @@ abstract class JobShouldQueue implements ShouldQueue
$request->merge($data); $request->merge($data);
} }
return collect($request->all()); return new QueueCollection($request->all());
} }
public function setOwner(): void public function setOwner(): void
{ {
if (! $this->request instanceof Collection) { if (! $this->request instanceof QueueCollection) {
return; return;
} }
@ -140,7 +140,7 @@ abstract class JobShouldQueue implements ShouldQueue
public function setSource(): void public function setSource(): void
{ {
if (! $this->request instanceof Collection) { if (! $this->request instanceof QueueCollection) {
return; return;
} }

View File

@ -37,6 +37,10 @@ class Queue extends Provider
}); });
app('events')->listen(JobProcessing::class, function ($event) { app('events')->listen(JobProcessing::class, function ($event) {
if (! defined('APP_RUNNING_IN_QUEUE')) {
define('APP_RUNNING_IN_QUEUE', true);
}
$payload = $event->job->payload(); $payload = $event->job->payload();
if (!array_key_exists('company_id', $payload)) { if (!array_key_exists('company_id', $payload)) {

View File

@ -2,6 +2,7 @@
namespace App\Traits; namespace App\Traits;
use App\Utilities\QueueCollection;
use Illuminate\Support\Str; use Illuminate\Support\Str;
trait Sources trait Sources
@ -29,8 +30,12 @@ trait Sources
if (empty($source)) { if (empty($source)) {
$request = $request ?: request(); $request = $request ?: request();
if ($request instanceof QueueCollection || running_in_queue()) {
$source = $prefix . 'queue';
} else {
$source = $request->isApi() ? $prefix . 'api' : null; $source = $request->isApi() ? $prefix . 'api' : null;
} }
}
if (empty($source)) { if (empty($source)) {
$source = $prefix . 'ui'; $source = $prefix . 'ui';

View File

@ -0,0 +1,10 @@
<?php
namespace App\Utilities;
use Illuminate\Support\Collection;
class QueueCollection extends Collection
{
}

View File

@ -157,3 +157,15 @@ if (!function_exists('cache_prefix')) {
return company_id() . '_'; return company_id() . '_';
} }
} }
if (!function_exists('running_in_queue')) {
/**
* Detect if application is running in queue.
*
* @return bool
*/
function running_in_queue()
{
return defined('APP_RUNNING_IN_QUEUE') ?? false;
}
}