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?