bernard/laravel

Bernard绑定Laravel

dev-master 2013-08-05 12:17 UTC

This package is not auto-updated.

Last update: 2024-09-09 14:03:05 UTC


README

Build Status

将Bernard引入Laravel。Laravel已经有一个很棒的队列..没错,但这只适用于Laravel。如果你的项目/公司使用多个框架,Bernard可以提供便利。

入门

扩展composer.json文件

{
    "require": {
        "bernard/laravel": "@dev"
    }
}

app/config/app.php中注册服务提供者

<?php
// ...
'providers' => array(
    // ..

    'Bernard\Laravel\BernardServiceProvider'

    // ..
)

选择驱动

现在您需要选择要使用的驱动。使用artisan初始化默认配置文件

$ php artisan config:publish bernard/laravel

这将创建文件app/config/packages/bernard/laravel/config.php

Redis

app/config/packages/bernard/laravel/config.php中进行配置

<?php

return array(
    'driver' => 'predis',
);

在IoC中设置predis

<?php

App::singleton('predis', function () {
    return new \Predis\Client(null, array(
        'prefix' => 'bernard:'
    ));
});

需要predis/predis composer包。

SQS

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', ...)
);

在IoC中设置sqs

<?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'
   ));
});

需要aws/aws-sdk-php composer包。

Iron MQ

app/config/packages/bernard/laravel/config.php中进行配置

<?php

return array(
    'driver' => 'iron_mq',

    // use prefetching for efficiency
    //'prefetch' => 10
);

在IoC中设置iron_mq

<?php

App::singleton('iron_mq', function () {
    return new \IronMq(array(
        'token'      => 'Your IronMQ Token',
        'project_id' => 'Your IronMQ Project ID',
    ));
});

Eloquent

适用于小型项目或测试。

app/config/packages/bernard/laravel/config.php中进行配置

<?php

return array(
    'driver' => 'eloquent',
);

您还需要迁移所需的表(一次)

$ php artisan migrate --package=bernard/laravel

用法

在Laravel(无Facades)中

在您的Laravel应用程序中,向队列添加一条新消息

<?php

$this->app['bernard:producer']->produce(new \Bernard\Message\DefaultMessage('MyService', array(
    'my' => 'args',
)));

在Laravel(有Facades)中

在您的app/config/app.php配置文件中添加以下两个别名

<?php

return array(
    // ..
    'aliases' => array(
        // ..
        'Producer' => 'Bernard\Laravel\Facades\Producer',
        'Consumer' => 'Bernard\Laravel\Facades\Consumer',
    ),
);

现在您可以用它们像其他任何Laravel Facade一样使用它们

<?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-service