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

生产者和消费者如何解耦

  •  1
     
  •   awanganddong · 309 天前 · 1650 次点击
    这是一个创建于 309 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    现在遇到的业务场景

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

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

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

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

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

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