• 请不要在回答技术问题时复制粘贴 AI 生成的内容
NoKey
V2EX  ›  程序员

单个服务拉取大量队列消息有什么好的方法么

  •  
  •   NoKey · Feb 16, 2021 · 2524 views
  •   You need to sign in to view this topic
    This topic created in 2070 days ago, the information mentioned may be changed or developed.

    我这里只运行了一个服务,订阅了一个消息队列

    生产者会不断的往队列里写入消息

    我这里读取到消息后,还有一个处理消息的过程

    如果是单线程的话,那么效率很低,如果前一条消息处理堵塞了,那么整个都会堵塞

    我能想到的就是创建一个线程池,每个消息都用一个线程单独处理

    这方面有没有比较好的处理方式,或者处理框架呢?

    请大佬指点一下,谢谢

    8 replies  •  2021-02-18 10:18:33 +08:00
    dangge
        1
    dangge  
       Feb 16, 2021
    先看是什么消息队列
    然后找对应的封装好的框架
    ----------------
    如果前一条消息处理堵塞了,那么整个都会堵塞
    起异步线程处理啊。
    ferock
        2
    ferock  
       Feb 16, 2021 via iPhone
    master 加 worker 模式啊
    Jooooooooo
        3
    Jooooooooo  
       Feb 16, 2021
    消费线程也多来几个, 异步处理也是个办法
    ferock
        4
    ferock  
       Feb 16, 2021 via iPhone
    标准队列模式应该是同一个 group 消费是原子的,消费过程中不要继续监听,让其他 worker 监听不就好了
    NoKey
        5
    NoKey  
    OP
       Feb 16, 2021
    @dangge rabbitMq 的话,有什么好的框架呢?谢谢
    NoKey
        6
    NoKey  
    OP
       Feb 16, 2021
    @ferock 我看了一下 master worker 模式,跟用线程池异步处理差不多的吧
    ferock
        7
    ferock  
       Feb 16, 2021 via Android
    @NoKey #5

    你开心就好
    jenlors
        8
    jenlors  
       Feb 18, 2021
    最好的方式就是尽量压榨所有的 CPU,看语言使用多进程,多线程,协程。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   844 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:59 · PVG 04:59 · LAX 13:59 · JFK 16:59
    ♥ Do have faith in what you're doing.