softonic/laravel-queue-job

Custom Job implementation for vyuldashev@laravel-queue-rabbitmq library

1.4.0 2023-12-20 14:21 UTC

README

Latest Version Software License Build Status Total Downloads Average time to resolve an issue Percentage of issues still open

Custom Job implementation for vyuldashev/laravel-queue-rabbitmq library

⚠️ This library works on vyuldashev/laravel-queue-rabbitmq. If you have questions about how to configure connections, feel free to read the vyuldashev/laravel-queue-rabbitmq documentation.

Main features

  • Add support to have multiple Handlers for the same Routing key.
  • Assign your Routing keys with your Handlers in the queue config file.

Installation

You can require the last version of the package using composer

composer require softonic/laravel-queue-job

Usage

Replace your RabbitMQJob class in the queue config file.

'connections' => [
    // ...

    'rabbitmq' => [
        // ...

        'options' => [
            'queue' => [
                // ...

                'job' => \Softonic\LaravelQueueJob\RabbitMQJob::class,
            ],
        ],
    ],

    // ...    
],

Add your message_handlers mapping in queue config file:

'message_handlers' => [
        TestHandler::class => [ // Handler
            '#.test_v1.created.testevent', // Routing keys
            '#.test_v1.replaced.testevent',
            '#.test_v1.updated.testevent',
            'global.test_v1.updated.testevent',
            // ...
        ],
        AnotherTestHandler::class => [
            '#.test_v1.created.testevent',
            'global.test_v1.updated.testevent',
            // ...
        ],
        // ...
    ],

Testing with artisan

Your php artisan queue:work {connection-name} --queue={queue-name}

Testing

softonic/laravel-queue-job has a PHPUnit test suite, and a coding style compliance test suite using PHP CS Fixer.

To run the tests, run the following command from the project folder.

$ make tests

To open a terminal in the dev environment:

$ make debug

License

The Apache 2.0 license. Please see LICENSE for more information.