2017 © Pedro Peláez
 

library laravel-unique-queue

Laravel queue connection that prevents identical jobs from being queued

image

mlntn/laravel-unique-queue

Laravel queue connection that prevents identical jobs from being queued

  • Thursday, March 29, 2018
  • by mlntn
  • Repository
  • 1 Watchers
  • 0 Stars
  • 6 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 100 % Grown

The README.md

:warning: DEPRECATED:, (*1)

Unique jobs have been implemented in laravel/framework. Please use the official implementation in Laravel 8.14.0 or higher. No further updates will be made to this repository and it will be archived in the future., (*2)

Laravel Unique Queue

This redis queue driver works just like the standard Laravel redis queue driver, however, it prevents the same job from being queued multiple times., (*3)

Requirements

Needs PHP >= 7.1 to be installed., (*4)

Requires illuminate/redis and illuminate/queue, both "~5.7", "~6" or "~7", (*5)

Installation

Require via Composer

composer require mlntn/laravel-unique-queue

Configure

Create a new connection in config/queue.php, (*6)

return [
    // ...
    'connections' => [
        'my_unique_queue_connection_name' => [
            'driver'      => 'unique',
            'connection'  => 'default',
            'queue'       => env('UNIQUE_QUEUE_NAME', 'my_unique_queue_name'),
            'retry_after' => 90,
        ],
        //...
    ]
];

Implementation

Implement a uniquely-queueable job

Your job should use the UniquelyQueueable trait and have the getUniqueIdentifier method:, (*7)

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Mlntn\Queue\Traits\UniquelyQueueable;

class MyUniqueJob implements ShouldQueue {

    use Dispatchable, InteractsWithQueue, Queueable, UniquelyQueueable, SerializesModels;

    /* ... */

    public function getUniqueIdentifier()
    {
        return 'some-unique-identifier';
    }

}

If the connection is not the default, you will need to specify the connection when dispatching the job:, (*8)

dispatch(new UniqueJob)->onConnection('my_unique_queue_connection_name');

Implement a unique-queueable listener

Just like with a job the listener class should use the UniquelyQueueable trait and make sure you've set the connection and queue:, (*9)

<?php

namespace App\Listeners;

use Illuminate\Contracts\Queue\ShouldQueue;
use Mlntn\Queue\Traits\UniquelyQueueable;

class MyListener implements ShouldQueue {

    public $connection = 'my_unique_queue_connection_name';

    public $queue = 'my_unique_queue_name';

    public function handle($event)
    {
        //
    }

    public function getUniqueIdentifier()
    {
        return 'some-unique-identifier';
    }
}

Using Lumen

Lumen handles binding slightly different. Use LumenQueueServiceProvider to enable unique queueing in Lumen., (*10)

Register service provider in app.php:, (*11)

$app->register(Mlntn\Providers\LumenQueueServiceProvider::class);

Using Horizon

Set up a worker configuration:, (*12)

    'worker_name' => [
        'connection' => 'my_unique_queue_connection_name',
        'queue'      => ['default'],
        'balance'    => 'auto',
        'processes'  => 16,
        'tries'      => 3,
    ],

Run Queue Worker

The unique queue behavior acts internally. Run queue worker as known using artisan (via cli, supervisor or another method). For more detailed information head over to https://github.com/illuminate/queue Specify the connection name used in config/queue.php, (*13)

php artisan queue:work my_unique_queue_connection_name

The Versions

29/03 2018

dev-master

9999999-dev http://github.com/mlntn/laravel-unique-queue

Laravel queue connection that prevents identical jobs from being queued

  Sources   Download

MIT

by Jared Mellentine

laravel queue unique

29/03 2018

1.0.0

1.0.0.0 http://github.com/mlntn/laravel-unique-queue

Laravel queue connection that prevents identical jobs from being queued

  Sources   Download

MIT

by Jared Mellentine

laravel queue unique