IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> easyswoole 读取处理Redis的发布订阅信息 -> 正文阅读

[大数据]easyswoole 读取处理Redis的发布订阅信息

版本信息

swoole version ? ? ? ? ? ? ? ?4.6.7
php version ? ? ? ? ? ? ? ? ? 7.4.20
easyswoole version ? ? ? ? ? ?3.4.6

场景? ?以前总是用python 去处理一下redis订阅发布的数据信息? ?现在使用Eayswoole 框架的自定义进程? 消费其订阅发布的信息 进而处理数据。

步骤如下:

在其App/Process 目录下 新增对象文件 如ToSubscribeRedis.php

<?php

namespace App\Process;

use EasySwoole\Component\Process\AbstractProcess;
use EasySwoole\EasySwoole\Config;

use Swoole\Coroutine;
use Swoole\Process;
use EasySwoole\RedisPool\RedisPool;

class ToSubscribeRedis extends AbstractProcess
{
    public $dev;

    protected function run($arg)
    {
        //$redis = RedisPool::defer("redis");
        var_dump('### 开始运行redis自定义进程 start ###');
       
        go(function () {
            $redis = RedisPool::defer("redis");
            $redis->subscribe(function (\EasySwoole\Redis\Redis $redis, $pattern, $str) {
               
                $info = json_decode($str, true);
                var_dump($info);
                // $data = $redis->unsubscribe('subscribe_name');
                //$redis->setSubscribeStop(true);
                Coroutine::sleep(1);
            }, 'subscribe_name');
        });
    }

    public function onShutDown()
    {
        // TODO: Implement onShutDown() method.
    }

    public function onReceive(string $str, ...$args)
    {
        // TODO: Implement onReceive() method.
    }
}

其中的var_dump($info); 就是其redis订阅发布的信息

重点:

在上面新建好ToSubscribeRedis.php 代码后,还需要注册? 还可以使用!!

在框架根目录? EasyswooleEvent.php 中? 在其mainServerCreate方法中添加如下行:

\EasySwoole\Component\Process\Manager::getInstance()->addProcess(new \App\Process\ToSubscribeRedis?('sub'));

完整的伪代码 如下:

<?php

namespace EasySwoole\EasySwoole;


use App\WebSocket\TCPParser;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Config;
use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;


class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        date_default_timezone_set('Asia/Shanghai');
        // 加载Config下所有配置
        self::loadConfig();
       
    }

    public static function mainServerCreate(EventRegister $register)
    {
        //此处省略N多代码  ....   
       
        //注册redis订阅进程   读取redis 发布订阅信息
        \EasySwoole\Component\Process\Manager::getInstance()->addProcess(new \App\Process\ToSubscribeRedis('sub'));

    }

  
    public static function loadConfig()
    {
        Config::getInstance()->loadDir(EASYSWOOLE_ROOT . '/Config');
    }
}

然后重启框架

php easyswoole server start

就可以看到打印的那个信息了 。


?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-25 08:11:03  更:2021-11-25 08:13:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:21:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码