• [转] 谈谈mq消息消费的2种方式


    本章内容

    从消费者的角度出发,分析一下消息消费的两种方式:

    • push方式
    • pull方式

    push方式

    消息消费的过程:

    1. mq接收到消息

    2. mq主动将消息推送给消费者(消费者需提供一个消费接口)

    mq属于主动方,消费者属于一种被动消费,一旦有消息到达mq,会触发mq推送机制,将消息推送给消费者,不管消费者处于何种状态。

    优点:

    消费者代码较少:对于消费者来说,只需提供一个消费接口给mq即可;mq将接收到的消息,随即推送到指定的消费接口

    消息实时性比较高:对于消费者来说,消息一旦到达mq,mq会立即推送给消费者

    缺点:

    1.消费者属于被动方,消息量比较大时,对消费者性能要求比较高;若消费者机器资源有限,可能会导致压力过载,引发宕机的情况。

    2.对消费者可用性要求比较高:当消费者不可用时,会导致很push失败,在mq方需要考虑至少推送成功一次,这块的设计下章节会做说明。

    pull方式

    消息消费的过程:

    1. 消费端采用轮询的方式,从mq服务中拉取消息进行消费
    2. 消费完成通知mq删除已消费成功的消息
    3. 继续拉取消息消费

    对于消费者来说,是主动方,可以采用线程池的方式,根据机器的性能来增加或缩小线程池的大小,控制拉取消息的速度,可以很好的控制自身的压力。

    优点:

    1. 消费者可以根据自己的性能主动控制消息拉去的速度,控制自己的压力,不至于把自己弄跨
    2. 实时性相对于push方式会低一些
    3. 消费者属于主动方,控制权更大一些

    缺点:

    1. 消费方需要实现消息拉取的代码
    2. 消费速度较慢时,可能导致mq中消息积压,消息消费延迟等

    总结

    1. 消费者性能较好,对实时性要求比较高的,可以采用push的方式
    2. 消费者性能有限,建议采用pull的方式
    3. 整体上来说,主要在于消费者的性能,机器的性能如果没有问题,push和pull都是可以的
    4. 大家有什么看法,可以留言一起讨论,希望本文对你有所帮助

    MQ系列整个内容,我们将讨论:

    【转载自:原文地址

  • 相关阅读:
    JS——jquery UI
    js——正则表达式
    jsonp——使用公共接口获取数据
    JS——json、ajax、jsonp
    [HNOI2011]括号修复 / [JSOI2011]括号序列
    [HNOI 2016] 树
    luogu_P3313 [SDOI2014]旅行
    无旋Treap模板
    [CF 718C] Sasha and Array
    [洛谷 P4556] 雨天的尾巴
  • 原文地址:https://www.cnblogs.com/eedc/p/12851355.html
Copyright © 2020-2023  润新知