dweik/laravel-redis-stream

1.1.0 2024-08-28 02:11 UTC

This package is auto-updated.

Last update: 2024-09-28 02:15:59 UTC


README

此包用于通过根据定义的通道触发处理器类来管理 Redis 流消息监听器。在此包中,您可以给同一通道分配多个类。

安装

使用以下命令通过 composer 安装此包:

composer require dweik/laravel-redis-stream

Laravel

然后您需要通过执行以下命令发布配置文件

php artisan vendor:publish --tag=laravel-redis-stream-config

Lumen

您需要在 bootstrap/app.php 文件中添加以下行

$app->register(LaravelStream\Redis\StreamServiceProvider::class);

并确保已加载 Redis,通过添加以下行(如果已存在则无需添加)

$app->register(Illuminate\Redis\RedisServiceProvider::class);

注意 如果您需要有关如何在 Lumen 上设置 Redis 的更多信息,可以通过 点击此处 查看官方网站

然后您需要将流配置文件从 vendor/dweik/laravel-redis-stream/config/streaming.php 复制到 config/streaming.php

config/streaming.php 文件中,您需要在 redis 键下设置 Redis 连接。然后您需要定义通道的名称,如下例所示分配处理器类

  • 注意:我们更倾向于使用 phpredis 驱动程序。
    'channels' => [
        'channel-name' => [
            App\Channels\SomeClassChannel::class
        ],
    ],

您还可以在 trim 键下为每个通道定义修剪值。例如:

    'trim' => [
        'channel-name' => 1000, // it means keep 1000 messages at most
    ],

创建处理器类

使用 artisan 命令通过 make:channel-listener 功能创建一个新的 处理器类,然后您可以在 app/Channels 路径下找到它

    php artisan make:channel-listener SomeClassChannel

运行通道监听器

要为所有通道运行 通道监听器,请使用以下命令

    php artisan stream:run

要运行特定通道,您可以将通道名称传递给 --channel 选项,例如::_

    php artisan stream:run --channel=channel-name

向 Redis 流发送消息

有一个外观类可以处理 Redis 上的 xADD 命令

use LaravelStream\Redis\Facades\Stream;

class SomeClass {

    public function(){
    
        /*
        .
        . some code
        .        
        */
        
        
        /**
        *
        * @var string  $channel   channel name
        * @var mixed   $data      the message data
        * @var integer $trim      (default null) the channel messages size,
        *                         when using (null) value, this package will use 
        *                         the defined value on the config file "config/streaming.php".
        *                         when using (zero) value that means stop trimming function
        */
        
        $messageID = Stream::stream( $channel, $data, $trim);
        
        
    
    }

}