RocketMQ介绍

RocketMQ介绍

什么是消息队列

消息队列RocketMQ是阿里巴巴集团自主研发的专业消息中间件,基于高可用分布式集群技术,提供消息订阅和发布、消息轨迹查询以及定时(延时)消息、资源统计、监控报警等一系列消息云服务,是企业级互联网架构的核心产品。消息队列RocktMQ历史超过9年,为分布式应用系统提供异步解耦、削峰填谷的能力,同时具备海量消息堆积,高吞吐、可靠重试等互联网应用所需的特性,是阿里巴巴双11使用的核心产品。

消息队列RocketMQ是阿里云正式商用的产品,目前在阿里多个地域(Region)提供了高可用消息云服务,单个域内采用多机房部署,可用性极高,即使整个机房不可用,任然可以为应用提供消息发布服务,产品稳定性及可用性完全按照阿里巴巴内部标准来实施,无单点。

消息队列RocketMQ目前提供TCP和HTTP协议层面的接入方式,支持Java,C++,.NET、Go、Python、Nodejs,PHP这七种编程语言,用户可以将应用部署在阿里云ECS,企业自建云,或者嵌入到移动端、物联网设备中与消息队列RocketMQ建立连接进行消息收发,同时本地开发者也可以通过公网接入消息队列RocketMQ服务进行消息收发

产品功能

消息队列 RocketMQ 提供了基于TCP和HTTP协议的多种编程语言的接入方式以及多维度的管理工具,同时针对不同的应用场景提供了一系列的特色功能。

功能概览图

功能简介.png

多协议支持

  • 支持HTTP协议:采用RESTful标准,方便易用,快速接入,跨网络络能力强,并支持七种语言客户端。

  • 支持TCP协议:区别于HTTP简单的接入方式,提供更为专业,可靠、稳定的TCP协议的SDK接入。

  • 支持STOMP协议:类似于HTTP的纯文本的协议机制,常用于脚本(如Ruby、Python、Perl)和消息队列 RocketMQ Broker进行轻量级交互。

管理工具

  • Web控制台:支持Topic管理,生产者管理、消费者管理、消息查询、消息轨迹展示和查询、资源报表、以及监控报警管理
  • OpenAPI: 提供API便于将消息队列RocketMQ管理工具集成到自己的控制台
  • mqadmin 命令集:专有云输出提供一套丰富的管理命令集,以及命令方式对消息队列RocketMQ服务进行管理。

特色功能

  • 事务消息:实现类似 X/open XA的分布事务功能,以达到事务最终一致性状态。
  • 定时(延时)消息:允许消息生产者指定消息进行定时(延时)投递,最长支持40天
  • 大消息: 支持最大4MB消息
  • 轨迹消息: 通过消息轨迹,能清晰定位消息从发布者发出,经由消息队列RocketMQ服务端,投递给消息订阅者的完整链路,方便定位排查问题
  • 广播消费:允许同一个Group ID所标识的所有consumer都各自消费某条消息一次。
  • 顺序消息:允许消息消费者按照消息发送的顺序对消息进行消费。
  • 重置消费进度:根据时间重置消费进度,允许用户进行消息回溯或者丢弃堆积消息。
  • 死信队列:将无法正常消费的消息存储到特殊的死信队列供后续处理
  • 全球消息路由:用于全球不同地域之间的消息同步复制,保证地域之间的数据一致性。

专有云部署

消息收发模型

消息队列 RocketMQ 支持“发布/订阅”模型,消息发布者(生产者)可以将一条消息发送服务端的某个主题(topic),多个消息接收方(消费者)订阅这个主题以接收该消息,如下图所示:

pub-sub model.png

名词解释

名词 名称 含义
Topic 消息主题 一级消息类型,通过Topic对消息进行分类。
Message 消息 消息队列中信息传递的载体
Message ID 消息的全局的唯一标识 由消息队列RocketMQ系统自动生成, 唯一标识某条消息 。
Message Key 消息的业务标识 由消息生产者(Producer)设置,唯一标识某个业务逻辑
Tag 消息标签 二级消息类型,用于进一步区分某个topic下的消息分类
Producer 消息生产者 也称消息发布者,负责生产并发送消息
Producer实例 Producer的一个对象实例 不同的Producer实例可以运行在不同进程内或者不同机器上。Producer实例线程安全。可在同一进程内多线程之间共享
Consumer 消息消费者 也称消息订阅者,负责接收并消费消息
Consumer 实例 Comsumer的一个对象实例 不同的Consumer实例可以运行在不同进程内或者不同机器上。一个Consumer实例内配置线程池消费消息。
Group 一类Producer或者Consumer 这类Producer或者Consumer通常生产或消费同一类消息,且消息发布或订阅的逻辑一致。
Group ID Group 的标识 -
队列 每个Topic下会由
一到多个队列来存储消息。
每个Topic对应队列数与消息类型以及实例所处地域(Region)相关,具体的队列数可提交工单自诩。
Exactly-Once投递语义 Exactly-Once投递语义 是指发送到消息系统的消息只能被Consumer处理且仅处理一次,即使Consumer重试消息发送导致某个消息重复投递,该消息在Consumer也只被消费一次。
集群消费 - 一个Group ID所标识的所有Consumer平均分摊消费消息。 例如某个Topic有9条消息,一个Group ID有3个Consumer实例,那么在集群消费模式下每个实例平均分摊,只消费其中的3个消息。
广播消费 - 一个Group ID所标识的所有Consumer都会各自消费某一条消息一次。例如某个Topic有9个消息,那么在广播消费模式下每个实例都会各自消费9条消息。
定时消息 定时消息 Producer 将消息发送到消息队列RocketMQ服务端,但并不期望这条消息立马投递,而是推迟到当前时间点之后的某个时间投递到Consumer进行消费,该消息即定时消息。
延时消息 延时消息 Producer 件消息发送到消息队列RocketMQ服务端,但并不期望这条消息立马投递,而是延迟一定时间后才投递到Consumer进行消费,该消息及延时消息。
事务消息 事务消息 消息队列RocketMQ提供类似X/open XA的分布事务功能,通过消息队列RocketMQ的事务消息能达到分布式事务的最终一致。
顺序消息 顺序消息 消息队列RocketMQ提供的一种按照顺序进行发布和消费的消息类型,分为全局顺序消息和分区顺序消息。
全局顺序消息 全局顺序消息 对于一个Topic,所有消息按照严格的先入先出(FIFO)的顺序进行发布和消费。
分区顺序消息 - 对于指定的一个Topic,所有消息根据Sharding Key进行区块分区。同一个分区内的消息按照严格的FIFO顺序进行发布和消费。 Sharding Key是顺序消息中用来区分不同分区的关键字段,和普通消息的Message Key是完全不同的概念。
消息堆积 - Producer已经将消息发送到消息队列RocketMQ的服务端,但由于Consumer消费能力有限,未能在短时间内将所有消息正确消费掉,此时在消息队列RocketMQ的服务端保存着未被消费的消息,该状态即消息堆积。
消息过滤 - Consumer可以根据消息标签(Tag)对消息进行过滤,确保Consumer最终只接收过滤后的消息类型。消息过滤在消息队列的RocketMQ的服务端完成。
消息轨迹 - 在一条消息从Producer发出到Consumer消费处理过程中,由各个相关节点的时间、地点等数据汇聚而成的完整链路信息。通过消息轨迹,您能清晰定位消息从Producer发出,经由消息队列RocketMQ服务端,投递给Consumer的完整链路,方便定位排查问题。
重置消费位点 - 以时间轴为坐标,在消息持久存储的时间范围内(默认3天),重新设置Consumer对已订阅的Topic的消费进度,设置完成后Consumer将接收设定时间点之后有Producer发送到消息队列RocketMQ服务端的消息。
死信队列 - 死信队列用于处理无法被正常消费的消息。当一条消息初次消费失败,消息队列RocketMQ会自动进行消息重试;达到最大重试次数后,若消费依然失败,则表明Consumer在正常情况下无法正确消费此消息。此时,消息队列RocketMQ不会立刻将消息丢弃,而是将这条消息发送到该Consumer对应的特殊队列中。
消息队列RocketMQ将这种正常情况下无法被消费的消息称为死信消息(Dead-Letter Message)
消息路由 - 消息路由常用于不同地域之间的消息同步,保证地域之间的数据一致性。消息队列RocketMQ的全球消息路由功能依托阿里云优质基础设施实现的高速通道专线,可以高效地实现国内外不同地域之间的消息同步复制。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容