zoukankan      html  css  js  c++  java
  • RocketMQ消息发送

    当学习RocketMQ时,首先得将RocketMQ的消息发送分为3种方式:同步,异步和单向。

    同步:发送者向 MQ 执行发送消息 API 时,同步等待, 直到消息服务器返回发送结果。

    异步:发送者向MQ执行发送消息API时,指定消息发送成功后的回调函数,然后调用消息发送API后,

    立即返回,消息发送者线程不阻塞,直到运行结束,消息发送成功或者失败的回调任务在一个新的线程中执行。

    单向:单向很好理解,其实就是producer执行完send方法后,就直接返回,不需要等待broker的结果,

    也不注册回调函数,只管发,不care消息能否真正成功存储broker中。

    RocketMQ消息发送常常会考虑以下三点:

    1.消息队列如何进行负载

    2.消息发送如何实现高可用

    3.批量消息发送如何实现一致性

    针对问题1:

    producer在发送消息时,如果本地路由表中未缓存topic的路由信息,则向nameserver发送获取理由信息请求,

    更新本地路由信息表,并且消息生产者每隔30s从nameserver更新路由表。

    针对问题2:

    主要通过两个手段:重试机制 和 broker的规避。broker的规避主要就是在一次消息发送过程中发现错误,在某一时间段内

    消息生产者不会选择该broker的消息队列,提高发送消息的成功率。

    针对问题3:

    MessageBatch extends Message ,MessageBatch内部持有List<Message> messages,这样处理流程与单条消息一样。

  • 相关阅读:
    Pyramid of Glasses 酒杯金字塔 [CF-676B]
    BZOJ 2456mode
    Hamburgers [CF-371C]
    lowbit
    two point
    大O表示法的理解
    6. 第 6 章 队列
    5. 第 5 章 栈
    3. 第 3 章 向量
    10. 第 10 章 指针
  • 原文地址:https://www.cnblogs.com/ligtto2018/p/14208113.html
Copyright © 2011-2022 走看看