生产者和消费者如何解耦

2021-01-28 11:30:18 +08:00
 awanganddong

1.框架是 tp5.0 和 laravel5.8

现在遇到的业务场景

扫描数据库,然后批量给用户发送微信消息

现在队列的模式是生产者消费者没有解耦的模式 就是 //队列 while(){ //发送消息 }

刚刚测试了下,20 万数据查询用了 5s,但是给微信发送消息比较耗时。

怎么才能把生产者和消费者解耦

下边这种模式不可行 //生产队列 A while(){ //消费队列 B }

2285 次点击
所在节点    PHP
10 条回复
dswyzx
2021-01-28 11:35:51 +08:00
感觉 mq 就是来解决你这个业务的,消费者消费慢,多开几个罢了
awanganddong
2021-01-28 11:36:40 +08:00
现在 redis 做队列。mq 的话,感觉太重了
caijihui11
2021-01-28 11:37:45 +08:00
微信发送消息 放 q 里面 多 worker
heybuddy
2021-01-28 12:00:07 +08:00
场景不复杂的话队列 redis 就够了,微信耗时那里可以考虑用 guzzlehttp 开并发请求的
awanganddong
2021-01-28 14:25:35 +08:00
@heybuddy 这个方案比较好
52coder
2021-01-28 14:27:35 +08:00
kafka?我最近也在梳理一些老功能,打算最一些改动
awanganddong
2021-01-28 14:41:04 +08:00
业务没有到那么重的地步,引进不必要的第三方增加维护难度。
avenger
2021-02-03 11:45:43 +08:00
Laravel 官方支持的 horizon 可以看一下,可以开多个队列,互不影响
zhao372716335
2021-03-14 19:51:35 +08:00
MQ
8355
2021-06-07 17:31:20 +08:00
你这个批量的推 kafka 好一些吧.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/749172

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX