framework icon indicating copy to clipboard operation
framework copied to clipboard

Adding SerializerRegistry and ability to define job serializers

Open msmakouz opened this issue 1 year ago • 1 comments

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),
        ]
    ],
];

msmakouz avatar Aug 09 '22 15:08 msmakouz

Codecov Report

Merging #753 (34b101e) into master (c7fee2c) will increase coverage by 0.02%. The diff coverage is 85.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.

codecov[bot] avatar Aug 09 '22 16:08 codecov[bot]

@msmakouz could you please resolve conflicts?

butschster avatar Aug 22 '22 11:08 butschster