eventio/bbq-bundle

Symfony2 Bundle for Eventio BBQ 消息队列库

安装: 177

依赖: 0

建议者: 0

安全: 0

星标: 4

关注者: 2

分支: 1

开放问题: 0

类型:symfony-bundle

dev-master 2013-08-07 19:25 UTC

This package is not auto-updated.

Last update: 2024-09-23 13:48:09 UTC


README

正在进行中,为 Eventio BBQ,PHP 消息队列抽象库的 Symfony2 Bundle。

安装

通过 composer.json

"require": {
    "eventio/bbq-bundle": "dev-master"
}

配置

在 AppKernel.php 中注册该包

public function registerBundles()
{
    $bundles = array(
        // ...
        new \Eventio\BBQBundle\EventioBBQBundle(),
        // ...
    );
}

按照以下方式在您的 config.yml 中配置每个队列

eventio_bbq:
    queues:
        queue_id:
            type: directory
            directory: /tmp/directory

您可以在下面的 queues 中插入任意数量的队列。有关详细配置参考,请参阅下面的队列类型。

使用方法

配置完包和队列后,访问 BBQ 实例并从队列中推送/获取任务

$bbq = $this->get('eventio_bbq'); // Instance of \Eventio\BBQ()
$bbq->pushJob('queue_id', 'Payload');

由于每个队列都作为独立的 Symfony2 服务注册,您可以直接访问它们

$queue = $this->get('eventio_bbq.queue_id'); // Instance of \Eventio\BBQ\Queue\DirectoryQueue();
$queue->pushJob(new StringPayload('Some payload'));

队列类型

DirectoryQueue

type: directory

参数

  • directory 作为队列存储的目录

RedisTubeQueue

type: predis

参数

  • key 队列的 Redis 键
  • predis_id Predis 连接 ID(默认 = default
  • config 进一步的队列配置(默认 = array()

多个 Redis 服务器

可以在 predis_connections 部分自定义 Predis 配置。

默认配置(当未定义任何内容时)如下。

eventio_bbq:
    predis_connections:
        default:
            params: tcp://127.0.0.1:6379
            options: ~

可以在不同的主机下配置两个不同的队列

eventio_bbq:
    predis_clients:
        host1:
            params: tcp://192.168.1.1:6379
        host2:
            params: tcp://192.168.1.2:6379
    queues:
        queue1:
            predis_id: host1
            key: queue1_at_host1
        queue2:
            predis_id: host2
            key: queue2_at_host2

在应用程序中使用这两个队列的方法

$bbq->pushJob('queue1', 'Job to redis server 1, queue "queue1_at_host1"');
$bbq->pushJob('queue2', 'Job to redis server 2, queue "queue2_at_host2"');

主/从复制

paramsoptions 下的 predis_clients 部分将直接传递给 \Predis\Client 构造函数。因此,您可以自由配置它们,包括主/从设置

eventio_bbq:
    predis_clients:
        master_slave:
            params: ["tcp://192.168.1.1:6379?alias=master", "tcp://192.168.1.2:6379?alias=slave"]
            options: [replication: true]
    queues:
        replicated_queue:
            predis_id: master_slave
            key: queue

有关所有可能的 连接参数(=params)和 客户端选项(=options

PheanstalkTubeQueue

type: pheanstalk

参数

  • tube 作为队列的 pheanstalk tube
  • pheanstalk_id pheanstalk 连接 ID(默认 = default

多个 beanstalkd 服务器

可以在 pheanstalk_connections 部分自定义 Pheanstalk 配置。

默认配置(当未定义任何内容时)如下。

eventio_bbq:
    pheanstalk_connections:
        default:
            host: 127.0.0.1

可以在不同的主机下配置两个不同的队列

eventio_bbq:
    pheanstalk_connections:
        host1:
            host: 192.168.0.1
        host2:
            host: 192.168.0.2
    queues:
        queue1:
            pheanstalk_id: host1
            tube: tube_at_host1
        queue2:
            pheanstalk_id: host2
            tube: tube_at_host2

在应用程序中使用这两个队列的方法很简单

$bbq->pushJob('queue1', 'Job to pheanstalk server 1, tube tube_at_host1');
$bbq->pushJob('queue2', 'Job to pheanstalk server 2, tube tube_at_host2');

贡献

由于该库处于非常初期的阶段,我们非常欢迎您通过以下方式对此项工作做出贡献:

  • 修复错误
  • 编写新的测试用例
  • 实现新的队列类型
  • 提供关于代码的想法和评论

许可证

版权所有 Eventio OyVille Mattila,2013

MIT 许可证 下发布