V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
awanganddong
V2EX  ›  PHP

生产者和消费者如何解耦

  •  1
     
  •   awanganddong · 2021-01-28 11:30:18 +08:00 · 2443 次点击
    这是一个创建于 1395 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    现在遇到的业务场景

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

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

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

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

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

    10 条回复    2021-06-07 17:31:20 +08:00
    dswyzx
        1
    dswyzx  
       2021-01-28 11:35:51 +08:00
    感觉 mq 就是来解决你这个业务的,消费者消费慢,多开几个罢了
    awanganddong
        2
    awanganddong  
    OP
       2021-01-28 11:36:40 +08:00
    现在 redis 做队列。mq 的话,感觉太重了
    caijihui11
        3
    caijihui11  
       2021-01-28 11:37:45 +08:00
    微信发送消息 放 q 里面 多 worker
    heybuddy
        4
    heybuddy  
       2021-01-28 12:00:07 +08:00
    场景不复杂的话队列 redis 就够了,微信耗时那里可以考虑用 guzzlehttp 开并发请求的
    awanganddong
        5
    awanganddong  
    OP
       2021-01-28 14:25:35 +08:00
    @heybuddy 这个方案比较好
    52coder
        6
    52coder  
       2021-01-28 14:27:35 +08:00
    kafka?我最近也在梳理一些老功能,打算最一些改动
    awanganddong
        7
    awanganddong  
    OP
       2021-01-28 14:41:04 +08:00
    业务没有到那么重的地步,引进不必要的第三方增加维护难度。
    avenger
        8
    avenger  
       2021-02-03 11:45:43 +08:00
    Laravel 官方支持的 horizon 可以看一下,可以开多个队列,互不影响
    zhao372716335
        9
    zhao372716335  
       2021-03-14 19:51:35 +08:00
    MQ
    8355
        10
    8355  
       2021-06-07 17:31:20 +08:00
    你这个批量的推 kafka 好一些吧.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2673 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 05:21 · PVG 13:21 · LAX 21:21 · JFK 00:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.