Skip to content

Class Spiral\RoadRunnerLaravel\Queue\RoadRunnerQueue contains 4 abstract methods and must therefore be declared abstract or implement the remaining methods - incompatible with laravel 13 #171

@KalininoGhoul

Description

@KalininoGhoul

Describe the bug

dispatch(new MyJob()) throws error with roadrunner queue driver

Expected behaviour

dispatch(new MyJob()) add MyJob to roadrunner queue

Actual behaviour

on dispatch(new MyJob()) throw error:

sync_worker_receive_frame: Network:
	goridge_frame_receive: validation failed on the message sent to STDOUT, see: https://docs.roadrunner.dev/error-codes/stdout-crc, invalid message: 
   Symfony\Component\ErrorHandler\Error\FatalError 

  Class Spiral\RoadRunnerLaravel\Queue\RoadRunnerQueue contains 4 abstract methods and must therefore be declared abstract or implement the remaining methods (Illuminate\Contracts\Queue\Queue::pendingSize, Illuminate\Contracts\Queue\Queue::delayedSize, Illuminate\Contracts\Queue\Queue::reservedSize, ...)

  at vendor/roadrunner-php/laravel-bridge/src/Queue/RoadRunnerQueue.php:22
     18▕ use Spiral\RoadRunner\Jobs\Queue\Driver;
     19▕ use Spiral\RoadRunner\Jobs\QueueInterface;
     20▕ use Spiral\RoadRunnerLaravel\Queue\Contract\HasQueueOptions;
     21▕ 
  ➜  22▕ final class RoadRunnerQueue extends Queue implements QueueContract
     23▕ {
     24▕     public function __construct(
     25▕         private readonly Jobs $jobs,
     26▕         private readonly RPCInterface $rpc,

Maybe the error occurs after this pr in laravel

System information

Key Value
PHP version 8.5.6
Current package version 6.4.0
RoadRunner version 2025.1.13
Environment docker

RoadRunner configuration file content

version: '3'
rpc:
  listen: 'tcp://127.0.0.1:6001'

server:
  command: 'php /var/www/html/vendor/bin/rr-worker start'

http:
  address: 0.0.0.0:8080
  fcgi:
    address: 0.0.0.0:9000
  pool:
    debug: true
    num_workers: 1
    supervisor:
      exec_ttl: 60s

jobs:
  pool:
    num_workers: 1
  pipelines:
    default:
      driver: memory
      config:
        priority: 1

Package configuration file content

<?php

declare(strict_types=1);

use Spiral\RoadRunner\Environment\Mode;
use Spiral\RoadRunnerLaravel\Grpc\GrpcWorker;
use Spiral\RoadRunnerLaravel\Http\HttpWorker;
use Spiral\RoadRunnerLaravel\Queue\QueueWorker;
use Spiral\RoadRunnerLaravel\Temporal\TemporalWorker;
use Temporal\Worker\WorkerFactoryInterface as TemporalWorkerFactoryInterface;

return [
    'cache' => [
        'storage' => 'cache',
    ],

    'grpc' => [
        'services' => [
            // GreeterInterface::class => new Greeter::class,

            // Service with specific interceptors
            // AnotherGreeterInterface::class => [
            //     'service'      => AnotherGreeterService::class,
            //     'interceptors' => [
            //         AnotherGreeterServiceInterceptor::class,
            //     ],
            // ],
        ],
        // Global interceptors - applied to all services
        'interceptors' => [
            // \Spiral\RoadRunnerLaravel\Common\Interceptor\AttributesInterceptor::class,
            // AllServiceInterceptor::class,
        ],
        'clients' => [
            'interceptors' => [
                // LoggingInterceptor::class,
            ],
            'services' => [
                // [
                //     'connection' => 'my-grpc-server:9002',
                //     'interfaces' => [
                //         GreeterInterface::class,
                //     ],
                // ],
                // [
                //     'connection' => 'my-secure-grpc-server:9002',
                //     'interfaces' => [
                //         GreeterInterface::class,
                //     ],
                //     'tls' => [
                //         'rootCerts' => '/path/to/ca.pem',
                //         'privateKey' => '/path/to/client.key',
                //         'certChain'  => '/path/to/client.crt',
                //         'serverName' => 'my.grpc.server',
                //     ],
                // ],
            ],
        ],
    ],

    'temporal' => [
        'address' => env('TEMPORAL_ADDRESS', '127.0.0.1:7233'),
        'defaultWorker' => env('TEMPORAL_TASK_QUEUE', TemporalWorkerFactoryInterface::DEFAULT_TASK_QUEUE),
        'workers' => [],
        'declarations' => [
            // 'App\Temporal\GreeterWorkflow'
        ],
    ],

    'workers' => [
        Mode::MODE_HTTP => HttpWorker::class,
        Mode::MODE_JOBS => QueueWorker::class,
        Mode::MODE_GRPC => GrpcWorker::class,
        Mode::MODE_TEMPORAL => TemporalWorker::class,
    ],
];

Additional context

config/queue.php

'connections' => [
        ...
        'roadrunner' => [
            'driver' => 'roadrunner',
            'queue' => env('RR_QUEUE', 'default'),
            'retry_after' => (int) env('RR_QUEUE_RETRY_AFTER', 90),
            'after_commit' => false,
        ],
    ],

Metadata

Metadata

Assignees

No one assigned

    Labels

    type:bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions