framework
framework copied to clipboard
Adding SerializerRegistry and ability to define job serializers
Q | A |
---|---|
Bugfix? | ✔️ |
Breaks BC? | ❌ |
New feature? | ✔️ |
This PR adds the ability to configure the default Queue serializer and configure serializers for jobs.
Default serializer
The default serializer Spiral\Queue\DefaultSerializer
uses opis/closure
package which doesn't work on PHP 8.1.
The code below replaces the default serializer in the Queue component to Spiral\Queue\PhpSerializer
.
This simplest implementation of the serializer doesn't use additional dependencies and works on PHP 8.1.
// file app/app/config/queue.php
return [
'defaultSerializer' => \Spiral\Queue\PhpSerializer::class,
];
Jobs serializers
Each job can use a separate serializer. This can be configured in the config file.
// file app/app/config/queue.php
return [
'registry' => [
'serializers' => [
\App\Job\Ping::class => \Spiral\Queue\PhpSerializer::class,
// other ways
// Ping::class => new \Spiral\Queue\PhpSerializer(),
// Ping::class => new \Spiral\Core\Container\Autowire(\Spiral\Queue\PhpSerializer::class),
]
],
];
Codecov Report
Merging #753 (34b101e) into master (c7fee2c) will increase coverage by
0.02%
. The diff coverage is85.36%
.
@@ Coverage Diff @@
## master #753 +/- ##
============================================
+ Coverage 79.94% 79.96% +0.02%
- Complexity 6724 6743 +19
============================================
Files 759 761 +2
Lines 17029 17064 +35
============================================
+ Hits 13613 13645 +32
- Misses 3416 3419 +3
Impacted Files | Coverage Δ | |
---|---|---|
src/Queue/src/Bootloader/QueueBootloader.php | 83.33% <60.00%> (ø) |
|
src/Queue/src/PhpSerializer.php | 80.00% <80.00%> (ø) |
|
src/Queue/src/Config/QueueConfig.php | 95.83% <100.00%> (+0.37%) |
:arrow_up: |
src/Queue/src/DefaultSerializer.php | 40.00% <100.00%> (ø) |
|
src/Queue/src/SerializerRegistry.php | 100.00% <100.00%> (ø) |
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.
@msmakouz could you please resolve conflicts?