Skip to content

想请教一下 CustomProcess 的使用 #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
blankzas opened this issue Feb 27, 2023 · 14 comments
Open

想请教一下 CustomProcess 的使用 #4

blankzas opened this issue Feb 27, 2023 · 14 comments

Comments

@blankzas
Copy link

想了解一下CustomProcess的调用

@Joyboo
Copy link
Owner

Joyboo commented Feb 27, 2023

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

@Joyboo
Copy link
Owner

Joyboo commented Feb 27, 2023

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

@blankzas
Copy link
Author

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

@Joyboo
Copy link
Owner

Joyboo commented Feb 27, 2023

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

@blankzas
Copy link
Author

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

@blankzas
Copy link
Author

image

@Joyboo
Copy link
Owner

Joyboo commented Feb 27, 2023

示例:加入同级的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
Copy link
Owner

Joyboo commented Feb 27, 2023

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

@blankzas
Copy link
Author

我现在的情况也是配置了config
image
但是没找到写入redis队列需要的参数及例子

@blankzas
Copy link
Author

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

@Joyboo
Copy link
Owner

Joyboo commented Feb 27, 2023

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

@blankzas
Copy link
Author

image

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

@Joyboo
Copy link
Owner

Joyboo commented Feb 27, 2023

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

@blankzas
Copy link
Author

image

image

已解决问题 感谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants