afikrim / laravel-redis-stream
此包已废弃,不再维护。未建议替代包。
此包最新版本(1.1.7)没有可用的许可信息。
一个Composer库,用于在Laravel中使用Redis流作为消息代理
1.1.7
2022-01-29 11:24 UTC
Requires
- php: ^7.4|^8.0
- illuminate/redis: *
- predis/predis: v1.1.9
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.3
Suggests
- ext-redis: Required to use redis above 5.0
README
Laravel Redis Stream是一个帮助您处理由Redis驱动的不同应用程序之间事件流的包。
此包的主要概念是提供一个简单的方法来存储您应用程序中的新事件,并在其他应用程序中消费它们。
安装
您可以使用以下命令通过composer安装此包
composer require afikrim/laravel-redis-stream
Lumen上的安装
通过composer安装包后,在bootstrap/app.php
中注册一个新的服务提供者
$app->register(\Afikrim\LaravelRedisStream\LaravelRedisStreamServiceProvider::class);
注意:不要忘记取消注释门面并注册redis(请使用predis,因为它不能在phpredis中工作)
添加配置
为stream
添加新的redis连接
<?php ... 'redis' => [ ... 'stream' => [ 'url' => env('REDIS_URL'), 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', '6379'), 'database' => env('REDIS_STREAM_DB', '3'), 'prefix' => env('REDIS_STREAM_PREFIX', Str::slug(strtolower(config('app.env')) . '.' . strtolower(config('app.name')), '.')) . ':', ] ], ...
可用命令
此包包含三个命令:
- 包含
stream:declare-group
命令用于声明流的组 - 包含
stream:destroy-group
命令用于销毁流的组 - 包含
stream:consume
命令用于消费传入的事件
添加自定义消费处理器
您可以通过在app/Console/Commands
中扩展我们的ConsumeCommand
来添加自己的消费者
<?php namespace App\Console\Commands; use Afikrim\LaravelRedisStream\Console\ConsumeCommand as ConsoleConsumeCommand; class ConsumeCommand extends ConsoleConsumeCommand { /** * Function to listen to new event stream */ protected function listen() { $options = []; if ($this->hasOption('group')) { $options['group'] = $this->option('group'); } if ($this->hasOption('consumer')) { $options['consumer'] = $this->option('consumer'); } if ($this->hasOption('count')) { $options['count'] = $this->option('count'); } if ($this->hasOption('block')) { $options['block'] = $this->option('block'); } if ($this->laravel->config->get('redis.stream.prefix')) { $options['prefix'] = $this->laravel->config->get('redis.stream.prefix'); } $server = new TransporterServer($options); $server->addHandler('mystream', function ($result) {return $result;}); $server->addHandler('mystream2', function ($result) {return $result;}); // And another awesome handlers... $server->listen(); } }
然后,将您的自定义ConsumeCommand
添加到App\Console\Kernel
类
protected $commands = [ // you other command, \App\Console\Commands\ConsumeCommad::class ]
向流发送数据
要向流发送数据,您可以使用ClientProxy
类。
发送数据并监听响应
... use Afikrim\LaravelRedisStream\ClientProxy; ... $results = ClientProxy::init($options) ->publish('mystream2', [ 'name' => 'Aziz', 'email' => "afikrim10@gmail.com", ]) ->subscribe('mystream2', 60); ...
发送数据而不等待任何响应
... use Afikrim\LaravelRedisStream\ClientProxy; ... ClientProxy::init($options) ->dispatch('mystream2', [ 'name' => 'Aziz', 'email' => "afikrim10@gmail.com", ]); ...