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

View File

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

View File

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

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() . '_';
}
}
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;
}
}