chefsplate / laravel-mongodb-queue by davidchchang

Thread-safe MongoDB database queue implementation for Laravel
5,493
9
4
Package Data
Maintainer Username: davidchchang
Maintainer Contact: davidchchang@gmail.com (David Chang)
Package Create Date: 2016-03-16
Package Last Update: 2018-07-14
Home Page:
Language: PHP
License: MIT
Last Refreshed: 2024-03-26 03:04:04
Package Statistics
Total Downloads: 5,493
Monthly Downloads: 9
Daily Downloads: 0
Total Stars: 9
Total Watchers: 4
Total Forks: 6
Total Open Issues: 0

Laravel 5 MongoDB Queue Driver

Thread-safe MongoDB database queue implementation for Laravel.

This driver is compatible with jensseger's laravel-mongodb library, however we use the mongodb client instead so we can leverage findAndModify updates with write concerns and $isolated operations.

Requirements

  • PHP 5.4+
  • mongodb-1.1.x PHP driver (or higher)
  • Mongo 3.x+ (see note below*)
  • Laravel 5.3 (for Laravel 5.1 or 5.2 support, please use the 5.1 branch)
  • You may also leverage laravel-mongodb in your project

*Note: Although concurrency and locking have been implemented since Mongo 2.2, the locking is done at the database level, which makes it highly non-performant. Since Mongo 3.0, collection-level and even document-level locking has been added. Future updates may leverage bulk updates which have been added in Mongo 3.2, which make it the ideal minimum version to install.

For more details on driver compatibility, please see the MongoDB ecosystem documentation.

Install

Require the latest version of this package with Composer:

composer require chefsplate/laravel-mongodb-queue:"^1.0.0"

Add the Service Provider to the providers array in config/app.php:

ChefsPlate\Queue\MongoDBServiceProvider::class,

You should now be able to use the mongodb driver in config/queue.php. (Use the same config as for the database, but use mongodb as the driver.)

'default' => 'mongodb',

'connections' => array(
    ...
    'mongodb' => array(
        'driver' => 'mongodb',
        'table' => 'jobs',
        'queue' => 'default',
        'expire' => 60,
    ),
    ...
}

Note: Mongo will automatically create the jobs collection. No database migration is needed.

Please ensure your config/database.php configuration for mongodb includes a DSN. This is required by our driver:

'mongodb' => array(
    'driver'   => 'mongodb',
    'dsn'      => 'mongodb://127.0.0.1:27017',
    'database' => 'database_name'
),

The format for the DSN is: mongodb://[username:password@]host1[:port1][,host2[:port2:],...]/db

For more info see: