mookofe/tail

RabbitMQ 和 PHP 客户端,用于 Laravel 和 Lumen,允许您轻松添加和监听队列消息

v1.0.5 2016-07-30 04:09 UTC

This package is not auto-updated.

Last update: 2024-09-18 08:30:20 UTC


README

RabbitMQ 和 PHP 客户端,用于 Laravel 和 Lumen,允许您轻松添加和监听队列消息。

Build Status Latest Stable Version License

功能

  • 简单的队列配置
  • 多个服务器连接
  • 轻松将消息添加到队列中
  • 使用有用的选项监听队列

要求

  • php-amqplib/php-amqplib: 2.*

版本

1.0.5

安装

准备

打开您的 composer.json 文件,并将以下内容添加到 require 数组中

"mookofe/tail": "1.*"

安装依赖项

$ composer install

或者

$ composer update

集成

Laravel

安装包后,打开您的 Laravel 配置文件 config/app.php 并添加以下行。

在 $providers 数组中添加此包的服务提供者。

Mookofe\Tail\ServiceProvider::class,

在 $aliases 数组中添加此包的门面。

'Tail' => Mookofe\Tail\Facades\Tail::class,

添加运行中的服务器连接文件

$ php artisan vendor:publish --provider="Mookofe\Tail\ServiceProvider" --tag="config"

Lumen

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

/*
|--------------------------------------------------------------------------
| Register Service Providers
|--------------------------------------------------------------------------
*/

//...

$app->configure('tail-settings');
$app->register(Mookofe\Tail\LumenServiceProvider::class);

//...

确保在您的 bootstrap/app.php 文件中取消注释 $app->withFacades();

在您的 Lumen 应用程序根目录中创建一个 config 文件夹,并将 vendor/mookofe/tail/config/tail.php 的内容复制到 config/tail-settings.php

RabbitMQ 连接

默认情况下,库将使用 RabbitMQ 安装凭据(在新安装中,用户 "guest" 使用密码 "guest" 创建)。

要覆盖默认连接或添加更多服务器,请编辑 RabbitMQ 连接文件:在 config/tail-settings.php

return array(

    'default' => 'default_connection',

    'connections' => array(

        'default_connection' => array(
            'host'                => 'localhost',
            'port'                => 5672,
            'username'            => 'guest',
            'password'            => 'guest',
            'vhost'               => '/',
            'ssl_context_options' => null,
            'connection_timeout'  => 3,
            'read_write_timeout'  => 50,   //should be at least 2x heartbeat (if using heartbeat)
            'keepalive'           => true, //requires php-amqplib v2.4.1+
            'heartbeat'           => 25,   //requires php-amqplib v2.4.1+
            'exchange'            => 'default_exchange_name',
            'consumer_tag'        => 'consumer',
            'exchange_type'       => 'direct',
            'content_type'        => 'text/plain'
        ),    
        'other_server' => array(
            'host'                => '192.168.0.10',
            'port'                => 5672,
            'username'            => 'guest',
            'password'            => 'guest',
            'vhost'               => '/',
            'ssl_context_options' => array(
                'capath'      => '/etc/ssl/certs',
                'cafile'      => './startssl_ca.pem',
                'verify_peer' => true,
            ),
            'connection_timeout'  => 3.0,
            'read_write_timeout'  => 3.0,
            'keepalive'           => false,
            'heartbeat'           => 0,
            'exchange'            => 'default_exchange_name',
            'consumer_tag'        => 'consumer',
            'exchange_type'       => 'fanout',
            'content_type'        => 'application/json'
        ),
    ),
);

向队列中添加消息

添加简单消息

    Tail::add('queue-name', 'message');

更改 RabbitMQ 服务器添加消息

    Tail::add('queue-name', 'message', array('connection_name' => 'connection_name_config_file'));

使用不同交换机添加消息

    Tail::add('queue-name', 'message', array('exchange' => 'exchange_name'));

使用不同内容类型添加消息

    Tail::add('queue-name', '{ 'message' : 'message' }', array('content_type' => 'application/json'));

使用不同选项添加消息

	$options = array (
		'connection_name' => 'connection_name_config_file',
		'exchange' => 'exchange_name',
		'vhost' => 'vhost'
	);	
	
    Tail::add('queue-name', 'message', $options);

使用 Tail 对象

	$message = new Tail::createMessage;
	$message->queue_name = 'queue-name';
	$message->message = 'message';
	$message->connection_name = 'connection_name_in_config_file';
	$message->exchange = 'exchange_name';
	$message->vhost = 'vhost';
	$message->content_type = 'content/type'

	$message->save();

监听队列

基于闭包的监听器

Tail::listen('queue-name', function ($message) {
    		
	//Your message logic code
});

带有选项的闭包监听器

$options = array(
	'message_limit' => 50,
	'time' => 60,
	'empty_queue_timeout' => 5,
	'connection_name' => 'connection_name_in_config_file',
    'exchange' => 'exchange_name',
    'vhost' => 'vhost'
);

Tail::listenWithOptions('queue-name', $options, function ($message) {
    		
	//Your message logic code		
});

选项定义

默认情况下,监听过程将无限期运行,除非您指定上述运行时间参数之一(message_limit、time、empty_queue_timeout)。它们可以混合使用,因此当满足其中一个条件时,进程将停止。

许可

此软件包是开源软件,许可协议为 MIT 许可