mookofe / tail
RabbitMQ 和 PHP 客户端,用于 Laravel 和 Lumen,允许您轻松添加和监听队列消息
Requires
- php: >=5.4.7
- illuminate/support: 5.*
- php-amqplib/php-amqplib: 2.*
Requires (Dev)
- mockery/mockery: dev-master
- phpunit/phpunit: 4.0.*
This package is not auto-updated.
Last update: 2024-09-18 08:30:20 UTC
README
RabbitMQ 和 PHP 客户端,用于 Laravel 和 Lumen,允许您轻松添加和监听队列消息。
功能
- 简单的队列配置
- 多个服务器连接
- 轻松将消息添加到队列中
- 使用有用的选项监听队列
要求
- 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 许可