This is pure laravel project made by vuexy template.
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.
Extend composer.json file:
{
"require": {
"bernard/laravel": "@dev"
}
}Register the service provider in app/config/app.php:
<?php
// ...
'providers' => array(
// ..
'Bernard\Laravel\BernardServiceProvider'
// ..
)Now you need to choose the Driver you want to use. Initialize the default config file with artisan:
$ php artisan config:publish bernard/laravelThis creates the file app/config/packages/bernard/laravel/config.php.
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.
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.
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',
));
});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/laravelIn your Laravel app, add a new message to the queue:
<?php
$this->app['bernard:producer']->produce(new \Bernard\Message\DefaultMessage('MyService', array(
'my' => 'args',
)));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'));# create a new message
$ php artisan bernard:produce MyService '{"json":"data"}'
# consume messages
$ php artisan bernard:consume my-serviceCreated by Pegasus
