bernard / laravel
Bernard bindings for Laravel
Requires
- php: >=5.3.0
- bernard/bernard: >=0.6,<1.0.0
- illuminate/support: ~4.0.0
Requires (Dev)
- illuminate/foundation: ~4.0.0
- mockery/mockery: ~0.7.0
- orchestra/testbench: ~2.0.0
This package is not auto-updated.
Last update: 2024-12-16 15:15:40 UTC
README
Brings Bernard to Laravel. Laravel already has a great queue.. That's right, but it only works with Laravel. If your project/company utilizes multiple frameworks, Bernard provides leverage.
Getting started
Extend composer.json
file:
{ "require": { "bernard/laravel": "@dev" } }
Register the service provider in app/config/app.php
:
<?php // ... 'providers' => array( // .. 'Bernard\Laravel\BernardServiceProvider' // .. )
Choose Driver
Now you need to choose the Driver you want to use. Initialize the default config file with artisan
:
$ php artisan config:publish bernard/laravel
This creates the file app/config/packages/bernard/laravel/config.php
.
Redis
Config in app/config/packages/bernard/laravel/config.php
<?php return array( 'driver' => 'predis', );
Setup predis
in IoC:
<?php App::singleton('predis', function () { return new \Predis\Client(null, array( 'prefix' => 'bernard:' )); });
Requires the predis/predis
composer package.
SQS
Config in app/config/packages/bernard/laravel/config.php
<?php return array( 'driver' => 'sqs', // optional: use prefetching for efficiency //'prefetch' => 10, // optional: pre-set queue name -> url mappings //'queue_urls' => array('some-queue' => 'https://sqs.eu-west-1.amazonaws.com/123123/some-queue', ...) );
Setup sqs
in IoC:
<?php use Aws\Sqs\SqsClient; // ... App::singleton('sqs', function () { return SqsClient::factory(array( 'key' => 'Your AWS Access Key', 'secret' => 'Your AWS Secret Key', 'region' => 'Your AWS Region' )); });
Requires the aws/aws-sdk-php
composer package.
Iron MQ
Config in app/config/packages/bernard/laravel/config.php
<?php return array( 'driver' => 'iron_mq', // use prefetching for efficiency //'prefetch' => 10 );
Setup iron_mq
in IoC:
<?php App::singleton('iron_mq', function () { return new \IronMq(array( 'token' => 'Your IronMQ Token', 'project_id' => 'Your IronMQ Project ID', )); });
Eloquent
For small projects or testing.
Config in app/config/packages/bernard/laravel/config.php
<?php return array( 'driver' => 'eloquent', );
You also need to migrate the required tables (once):
$ php artisan migrate --package=bernard/laravel
Usage
In Laravel without Facades
In your Laravel app, add a new message to the queue:
<?php $this->app['bernard:producer']->produce(new \Bernard\Message\DefaultMessage('MyService', array( 'my' => 'args', )));
In Laravel with Facades
Add the two aliases in your app/config/app.php
config file like so:
<?php return array( // .. 'aliases' => array( // .. 'Producer' => 'Bernard\Laravel\Facades\Producer', 'Consumer' => 'Bernard\Laravel\Facades\Consumer', ), );
And now you can use them as any other Facade in Laravel:
<?php Producer::message('MyService', array('my' => 'args'));
From command line
# create a new message $ php artisan bernard:produce MyService '{"json":"data"}' # consume messages $ php artisan bernard:consume my-service