Существует библиотека laravel-queue , которая работает с библиотекой php-enqueue, с которой вы связаны, чтобы сделать ее совместимой с Встроенной системой очередей Laravel , упомянутой Флорианом.
По умолчанию он все еще будет использовать сериализованный объект, но я думаю, что он может быть переопределен.Если вы посмотрите в Queue.php, createObjectPayload () в строке 130 в ядре Laravel Framework, то здесь и выполняется сериализация задания.
Если вы расширяете класс Queue в laravel-библиотека очереди, вы должны иметь возможность изменить createObjectPayload, чтобы он выглядел примерно так:
protected function createObjectPayload($job, $queue)
{
$payload = $this->withCreatePayloadHooks($queue, [
'displayName' => $this->getDisplayName($job),
'job' => 'Illuminate\Queue\CallQueuedHandler@call',
'maxTries' => $job->tries ?? null,
'timeout' => $job->timeout ?? null,
'timeoutAt' => $this->getJobExpiration($job),
'data' => [
'commandName' => $job,
'command' => $job,
],
]);
return array_merge($payload, [
'data' => [
'commandName' => get_class($job),
'command' => json_encode(clone $job),
],
]);
}
Это должно JSON кодировать данные задания, а не сериализовать их.Возможно, вы даже сможете полностью удалить кодировку, поскольку я думаю, что она уже закодирована в JSON где-то в цепочке.