Commaaa2
This commit is contained in:
88
vendor/laravel/framework/src/Illuminate/Queue/QueueServiceProvider.php
vendored
Normal file → Executable file
88
vendor/laravel/framework/src/Illuminate/Queue/QueueServiceProvider.php
vendored
Normal file → Executable file
@@ -12,15 +12,18 @@ use Illuminate\Queue\Connectors\RedisConnector;
|
||||
use Illuminate\Queue\Connectors\SqsConnector;
|
||||
use Illuminate\Queue\Connectors\SyncConnector;
|
||||
use Illuminate\Queue\Failed\DatabaseFailedJobProvider;
|
||||
use Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider;
|
||||
use Illuminate\Queue\Failed\DynamoDbFailedJobProvider;
|
||||
use Illuminate\Queue\Failed\NullFailedJobProvider;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\Facade;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Support\Str;
|
||||
use Opis\Closure\SerializableClosure;
|
||||
use Laravel\SerializableClosure\SerializableClosure;
|
||||
|
||||
class QueueServiceProvider extends ServiceProvider implements DeferrableProvider
|
||||
{
|
||||
use SerializesAndRestoresModelIdentifiers;
|
||||
|
||||
/**
|
||||
* Register the service provider.
|
||||
*
|
||||
@@ -28,12 +31,37 @@ class QueueServiceProvider extends ServiceProvider implements DeferrableProvider
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
$this->configureSerializableClosureUses();
|
||||
|
||||
$this->registerManager();
|
||||
$this->registerConnection();
|
||||
$this->registerWorker();
|
||||
$this->registerListener();
|
||||
$this->registerFailedJobServices();
|
||||
$this->registerOpisSecurityKey();
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure serializable closures uses.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function configureSerializableClosureUses()
|
||||
{
|
||||
SerializableClosure::transformUseVariablesUsing(function ($data) {
|
||||
foreach ($data as $key => $value) {
|
||||
$data[$key] = $this->getSerializedPropertyValue($value);
|
||||
}
|
||||
|
||||
return $data;
|
||||
});
|
||||
|
||||
SerializableClosure::resolveUseVariablesUsing(function ($data) {
|
||||
foreach ($data as $key => $value) {
|
||||
$data[$key] = $this->getRestoredPropertyValue($value);
|
||||
}
|
||||
|
||||
return $data;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -168,11 +196,22 @@ class QueueServiceProvider extends ServiceProvider implements DeferrableProvider
|
||||
return $this->app->isDownForMaintenance();
|
||||
};
|
||||
|
||||
$resetScope = function () use ($app) {
|
||||
if (method_exists($app['log']->driver(), 'withoutContext')) {
|
||||
$app['log']->withoutContext();
|
||||
}
|
||||
|
||||
$app->forgetScopedInstances();
|
||||
|
||||
return Facade::clearResolvedInstances();
|
||||
};
|
||||
|
||||
return new Worker(
|
||||
$app['queue'],
|
||||
$app['events'],
|
||||
$app[ExceptionHandler::class],
|
||||
$isDownForMaintenance
|
||||
$isDownForMaintenance,
|
||||
$resetScope
|
||||
);
|
||||
});
|
||||
}
|
||||
@@ -199,8 +238,15 @@ class QueueServiceProvider extends ServiceProvider implements DeferrableProvider
|
||||
$this->app->singleton('queue.failer', function ($app) {
|
||||
$config = $app['config']['queue.failed'];
|
||||
|
||||
if (array_key_exists('driver', $config) &&
|
||||
(is_null($config['driver']) || $config['driver'] === 'null')) {
|
||||
return new NullFailedJobProvider;
|
||||
}
|
||||
|
||||
if (isset($config['driver']) && $config['driver'] === 'dynamodb') {
|
||||
return $this->dynamoFailedJobProvider($config);
|
||||
} elseif (isset($config['driver']) && $config['driver'] === 'database-uuids') {
|
||||
return $this->databaseUuidFailedJobProvider($config);
|
||||
} elseif (isset($config['table'])) {
|
||||
return $this->databaseFailedJobProvider($config);
|
||||
} else {
|
||||
@@ -222,6 +268,19 @@ class QueueServiceProvider extends ServiceProvider implements DeferrableProvider
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new database failed job provider that uses UUIDs as IDs.
|
||||
*
|
||||
* @param array $config
|
||||
* @return \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider
|
||||
*/
|
||||
protected function databaseUuidFailedJobProvider($config)
|
||||
{
|
||||
return new DatabaseUuidFailedJobProvider(
|
||||
$this->app['db'], $config['database'], $config['table']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new DynamoDb failed job provider.
|
||||
*
|
||||
@@ -249,20 +308,6 @@ class QueueServiceProvider extends ServiceProvider implements DeferrableProvider
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure Opis Closure signing for security.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function registerOpisSecurityKey()
|
||||
{
|
||||
if (Str::startsWith($key = $this->app['config']->get('app.key'), 'base64:')) {
|
||||
$key = base64_decode(substr($key, 7));
|
||||
}
|
||||
|
||||
SerializableClosure::setSecretKey($key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the services provided by the provider.
|
||||
*
|
||||
@@ -271,8 +316,11 @@ class QueueServiceProvider extends ServiceProvider implements DeferrableProvider
|
||||
public function provides()
|
||||
{
|
||||
return [
|
||||
'queue', 'queue.worker', 'queue.listener',
|
||||
'queue.failer', 'queue.connection',
|
||||
'queue',
|
||||
'queue.connection',
|
||||
'queue.failer',
|
||||
'queue.listener',
|
||||
'queue.worker',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user