RocketMQ 总篇(默认配置 功能 存取原理)

image

image

名词

  • Topic:消息主题,一级消息类型,通过 Topic 对消息进行分类。详情请见Topic 与 Tag 最佳实践。
  • Tag:消息标签,二级消息类型,用来进一步区分某个 Topic 下的消息分类。详情请见Topic 与 Tag 最佳实践。
  • Message:消息,消息队列中信息传递的载体。
  • Message ID:消息的全局唯一标识,由消息队列 RocketMQ 系统自动生成,唯一标识某条消息。
  • Message Key:消息的业务标识,由消息生产者(Producer)设置,唯一标识某个业务逻辑。
  • Group:一类 Producer 或 Consumer,这类 Producer 或 Consumer 通常生产或消费同一类消息,且消息发布或订阅的逻辑一致。

一个完整的消息过程

发送 -- 存储 -- 消费

  1. Provider 通过NameServer获取到Broker信息和路由信息,和一个Broker建立长连接
  2. Provider 根据设定的Topic,轮询的在Topic的Queue下发送消息
  3. 默认同步消息,如果发送失败会重试2次或者超时,如果发送成功,会返回一个sendStatus为SEND_OK
  4. Broker把消息持久化的保存下来,并且对Consumer可见
  5. Consumer会定时的从Consumer Queue里面拉取消息到本地的线程池
  6. 消息成功的被消费之后,会response给Broker,消费成功,MQ会标记已经被成功消费过的消息,保证不会被重复消费

特点

  1. 灵活可扩展性:RocketMQ 天然支持集群,其核心四组件(Name Server、Broker、Producer、Consumer)每一个都可以在没有单点故障的情况下进行水平扩展。

  2. 海量消息堆积能力:RocketMQ 采用零拷贝原理实现超大的消息的堆积能力,据说单机已可以支持亿级消息堆积,而且在堆积了这么多消息后依然保持写入低延迟。

  3. 支持顺序消息:可以保证消息消费者按照消息发送的顺序对消息进行消费。顺序消息分为全局有序和局部有序,一般推荐使用局部有序,即生产者通过将某一类消息按顺序发送至同一个队列来实现。

  4. 多种消息过滤方式:消息过滤分为在服务器端过滤和在消费端过滤。服务器端过滤时可以按照消息消费者的要求做过滤,优点是减少不必要消息传输,缺点是增加了消息服务器的负担,实现相对复杂。消费端过滤则完全由具体应用自定义实现,这种方式更加灵活,缺点是很多无用的消息会传输给消息消费者。

  5. 支持事务消息:RocketMQ 除了支持普通消息,顺序消息之外还支持事务消息,这个特性对于分布式事务来说提供了又一种解决思路。

  6. 回溯消费:回溯消费是指消费者已经消费成功的消息,由于业务上需求需要重新消费,RocketMQ 支持按照时间回溯消费,时间维度精确到毫秒,可以向前回溯,也可以向后回溯。

消息的类型

http://rocketmq.apache.org/docs/simple-example/

按照发送的特点分:

  1. 同步消息
  2. 异步消息
  3. 单向消息

按照使用功能特点分:

  1. 普通消息()
  2. 顺序消息
  3. 广播消息
  4. 延时消息
  5. 批量消息
  6. 事务消息

按照Broker和Consumer的关系:

  1. 订阅模式
  2. 广播模式

支持的功能

  • Pub/Sub messaging model
  • Scheduled message delivery
  • Message retroactivity by time or offset
  • Log hub for streaming
  • Big data integration
  • Reliable FIFO and strict ordered messaging in the same queue
  • Efficient pull&push consumption model
  • Million-level message accumulation capacity in a single queue
  • Multiple messaging protocols like JMS and OpenMessaging
  • Flexible distributed scale-out deployment architecture
  • Lightning-fast batch message exchange system
  • Various message filter mechanics such as SQL and Tag
  • Docker images for isolated testing and cloud isolated clusters
  • Feature-rich administrative dashboard for configuration, metrics and monitoring

默认参数

4.3.0版本的源码

  1. 发送消息超时时间默认3s
  2. 发送消息失败重试的次数2次,一共就是3次(正常一次,重试2次)
  3. 默认QueueNums:4
  4. 事务消息MQ的重试次数默认是15次,可以通过设置transactionCheckMax设置
    private int sendMsgTimeout = 3000;
    private int retryTimesWhenSendFailed = 2;
    private int retryTimesWhenSendAsyncFailed = 2;
    private volatile int defaultTopicQueueNums = 4;
    private int compressMsgBodyOverHowmuch = 1024 * 4;
    private int maxMessageSize = 1024 * 1024 * 4; // 4M

消息堆积

https://blog.csdn.net/yinni11/article/details/80531970

  1. 消息在MQ里面堆积(官方文档说是具有万亿级别的堆积容量)
  2. Consumer有专门的线程从Broker拉取Message,并且丢到自己的线程池里面做堆积,拉取过程中如果发现消息数据条数超过1000条,或者消息量超过100M,那么我们就暂停消息拉取,延迟50ms后再次发起任务拉取
Apache RocketMQ is a distributed messaging and streaming platform with low latency, high performance and reliability, 
trillion-level capacity and flexible scalability. 

参考

完整的介绍RMQ
https://www.jianshu.com/p/e5cfb4ba925e

阿里云官方英文、最新的Demo和Guidence
http://rocketmq.apache.org/docs/transaction-example/

阿里云的帮助文档啊,超级详细而且有Demo
https://help.aliyun.com/document_detail/29551.html

阿里云在github上的Demos(包括整合Spring 和简单TCP的形式)
https://github.com/AliwareMQ/mq-demo

简单且有Demo的简书博客系列,里面还有Dubbo先关的博客,非常好
https://www.jianshu.com/u/8e1110d27153

零度的RMQ系列博客
https://mp.weixin.qq.com/s/lxzD8HZofMuMRKS-zcP85A

官方API
http://rocketmq.apache.org/docs/simple-example/

RocketMQ和Kafak的区别
https://mp.weixin.qq.com/s/KfBruI-tOz-eJuM2fgqyew

java快速入门
https://www.cnblogs.com/jiangxinlingdu/p/7892593.html

RocketMQ 4.3发布,支持分布式事务 还有分布式事务的常见解决方案
https://baijiahao.baidu.com/s?id=1607829339793465291&wfr=spider&for=pc

10分钟超级详细的入门
http://jm.taobao.org/2017/01/12/rocketmq-quick-start-in-10-minutes/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,820评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,648评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,324评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,714评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,724评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,328评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,897评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,804评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,345评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,431评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,561评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,238评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,928评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,417评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,528评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,983评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,573评论 2 359

推荐阅读更多精彩内容