Joyboo / Joyboo-admin-easyswoole

EasySwoole后台项目
28 stars 8 forks source link

想请教一下 CustomProcess 的使用 #4

Open blankzas opened 1 year ago

blankzas commented 1 year ago

想了解一下CustomProcess的调用

Joyboo commented 1 year ago

就是启动一个自定义进程,监听一个redis队列,不断的 取出 消费里面的数据

Joyboo commented 1 year ago

主进程启动的时候传入consumerJobs参数就可以了,具体参考在 EasySwooleEvent.php 第35行

blankzas commented 1 year ago

这个有看到注册 但是没看到怎样投递到指定的Process 想问一下参考代码例子

Joyboo commented 1 year ago

自定义进程会和Worker进程一起启动(其实也算Worker进程的一种),启动后 运行 BaseTrait.php 的run方法,也就是基于Timer定时器来实现的

blankzas commented 1 year ago

比如我添加了一个处理Excel任务 我该怎样触发这个任务呢

blankzas commented 1 year ago
image
Joyboo commented 1 year ago

示例:加入同级的config.php就可以,往redis队列里写入数据即可测试

[
                'name' => 'ExportData',                             // 进程名
                'class' => \App\CustomProcess\ExportData::class,         // 运行类
                'psnum' => 1,                                  // 进程数, 默认1个
                'queue' => 'xxxx 队列名',                  // 监听的redis队列名
                'tick' => 1000,                                // 多久运行一次,单位毫秒, 默认1000毫秒
                'limit' => 200,                                // 单次出队列的阈值, 默认200
                'coroutine' => false                            // 是否为每条数据开启协程
                'pool' => 'default'                             // redis连接池名称
            ],
Joyboo commented 1 year ago

注意消费进程是一直存在不断监听队列的,如果是定时运行的任务,你应该使用Crontab

blankzas commented 1 year ago

我现在的情况也是配置了config

image

但是没找到写入redis队列需要的参数及例子

blankzas commented 1 year ago

我是拿来做异步数据导出用的

Joyboo commented 1 year ago

看下这个进程启动了没有,如果启动了应该就是ok的,写入队列的话,任意客户端都可以,包括手动往redis去push都可以触发的

blankzas commented 1 year ago
image

进程启动了 push 进去的数据有固定字段数据要求吗

Joyboo commented 1 year ago

没有要求的,push进去的是什么,consume方法接收到的就是什么,可以打印看看嘛

blankzas commented 1 year ago
image image

已解决问题 感谢