awanganddong
V2EX  ›  PHP

生产者和消费者如何解耦

  •  1
     
  •   awanganddong · Jan 28, 2021 · 3036 views
    This topic created in 1934 days ago, the information mentioned may be changed or developed.

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

    现在遇到的业务场景

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

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

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

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

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

    10 replies    2021-06-07 17:31:20 +08:00
    dswyzx
        1
    dswyzx  
       Jan 28, 2021
    感觉 mq 就是来解决你这个业务的,消费者消费慢,多开几个罢了
    awanganddong
        2
    awanganddong  
    OP
       Jan 28, 2021
    现在 redis 做队列。mq 的话,感觉太重了
    caijihui11
        3
    caijihui11  
       Jan 28, 2021
    微信发送消息 放 q 里面 多 worker
    heybuddy
        4
    heybuddy  
       Jan 28, 2021
    场景不复杂的话队列 redis 就够了,微信耗时那里可以考虑用 guzzlehttp 开并发请求的
    awanganddong
        5
    awanganddong  
    OP
       Jan 28, 2021
    @heybuddy 这个方案比较好
    52coder
        6
    52coder  
       Jan 28, 2021
    kafka?我最近也在梳理一些老功能,打算最一些改动
    awanganddong
        7
    awanganddong  
    OP
       Jan 28, 2021
    业务没有到那么重的地步,引进不必要的第三方增加维护难度。
    avenger
        8
    avenger  
       Feb 3, 2021
    Laravel 官方支持的 horizon 可以看一下,可以开多个队列,互不影响
    zhao372716335
        9
    zhao372716335  
       Mar 14, 2021
    MQ
    8355
        10
    8355  
       Jun 7, 2021
    你这个批量的推 kafka 好一些吧.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2881 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 10:19 · PVG 18:19 · LAX 03:19 · JFK 06:19
    ♥ Do have faith in what you're doing.