2017 © Pedro Peláez
 

library laravel-amqp

PHP实现的MQ工具类, 通过RabbitMQ测试. 使用方式基于Laravel ServiceProvider.

image

ginnerpeace/laravel-amqp

PHP实现的MQ工具类, 通过RabbitMQ测试. 使用方式基于Laravel ServiceProvider.

  • Monday, March 13, 2017
  • by ginnerpeace
  • Repository
  • 1 Watchers
  • 1 Stars
  • 5 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

MQ

快速开始

0. 添加composer包

"require": {
    "ginnerpeace/laravel-amqp": "xxxxxxx"
}

1. 添加ServiceProvider和Facade

<?php
return [
    // ....

    'providers' => array(
        // ...
        Gimq\Providers\MQServiceProvider::class,
    ),

    'aliases' => array(
        // ...
        'MQ' => Gimq\Facades\MQ::class,
    ),

    // ...
];

2. 添加配置

$ php artisan vendor:publish --provider="Gimq\Providers\MQServiceProvider"
  • 执行后将生成config/amqp.php文件
  • 需按照 connections.rabbitmq.queues 里的结构进行队列配置
  • 调用时只使用队列别名
  • 特别注意各队列的channel_id必须大于0且不能相同(php-amqplib/php-amqplib里的设定), 如嫌麻烦可以用 $i++ _(:з」∠)_
<?php

return [
    // 有多种连接之后可以用dotenv
    'default' => 'rabbitmq',
    'connections' => [
        'rabbitmq' => [
            'host' => env('MQ_HOST'),
            'port' => env('MQ_PORT'),
            'user' => env('MQ_USER'),
            'password' => env('MQ_PASSWORD'),
            'vhost' => env('MQ_VHOST'),
            // 上面是mq基本信息
            // ----------------------------------------
            // 下面配置每个队列, 这里add_coupon为一个示例
            'queues' => [
                'add_coupon' => [
                    'queue' => 'add_coupon',
                    'queue_flags' => [
                        'durable' => TRUE,
                        'routing_key' => 'coupon.*',
                    ],
                    'message_properties' => [
                        // delivery_mode value说明
                        // DELIVERY_MODE_NON_PERSISTENT 1
                        // DELIVERY_MODE_PERSISTENT 2
                        'delivery_mode' => 2,
                        'content_encoding' => 'UTF-8',
                        'priority' => 0,
                        'content_type' => 'application/json',
                    ],
                    // channel_id要大于0, 项目中各队列不可以重复
                    'channel_id' => 1,
                    'exchange_name' => 'topic_coupon',
                    'exchange_type' => 'topic',
                    'exchange_flags' => NULL,
                ],
            ],
        ],
    ],
];

3. 发送消息

<?php

// 支持下列调用方式
// 1. 指定连接
MQ::connection('rabbitmq')->publish('message', 'add_coupon');

// 2. 常规发送 (将使用配置中的默认连接)
MQ::publish('message', 'add_coupon');

// 3. 批量发送
// 传入数组, 适合常规数据量下的发送
MQ::batchPublish(['message', 'message2'], 'add_coupon');

// 4. 另一种批量发送
// 传入生成器, 适合大批量发送, 不进行变量存储 节省内存
$msgClosure = function () {
    for ($i=0; $i < 1000000; $i++) {
        yield 'message' . $i;
    }
};
MQ::batchPublish($msgClosure(), 'add_coupon');

// 5. 不使用交换机发送
// 传入第三个参数为true后, 定义队列时Exchange会为空, routingKey为队列名称
MQ::publish('message', 'add_coupon', TRUE);

4. 消费

敬请期待...., (*1)

The Versions

13/03 2017

dev-develop

dev-develop https://github.com/ginnerpeace/laravel-amqp

PHP实现的MQ工具类, 通过RabbitMQ测试. 使用方式基于Laravel ServiceProvider.

  Sources   Download

MIT

The Requires

 

by Gjy

21/09 2016

dev-master

9999999-dev https://github.com/ginnerpeace/laravel-amqp

PHP实现的MQ工具类, 通过RabbitMQ测试. 使用方式基于Laravel ServiceProvider.

  Sources   Download

MIT

The Requires

 

by Gjy

21/09 2016

1.0.1

1.0.1.0 https://github.com/ginnerpeace/laravel-amqp

PHP实现的MQ工具类, 通过RabbitMQ测试. 使用方式基于Laravel ServiceProvider.

  Sources   Download

MIT

The Requires

 

by Gjy