bernard/laravel
| Install | |
|---|---|
composer require bernard/laravel |
|
| PHP: | >=5.3.0 |
| License: | MIT |
| Last Updated: | Sep 10, 2013 |
| Links: | GitHub · Packagist |
Bernard for Laravel
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
