什么是消息队列 RocketMQ?_消息队列 RocketMQ-阿里云 https://help.aliyun.com/document_detail/29532.html

2019-01-30 16:29:47

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

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

功能概览图

双协议支持

  • 支持 HTTP 协议:采用 RESTful 标准,方便易用,快速接入,跨网络能力强,并支持七种多语言客户端。
  • 支持 TCP 协议:区别于 HTTP 简单的接入方式,提供更为专业、可靠、稳定的 TCP 协议的 SDK 接入。

管理工具

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

特色功能

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

专有云部署

  • 专家定制:提供技术方案设计;专家现场技术支持与培训。
  • 灵活部署:支持专有云独立部署,同时支持混合云架构。
  • 运维管控:专有云支持 mqadmin 命令集、Open API 运维管理工具,方便管控平台集成以及统一运维。

消息收发模型

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

名词解释_消息队列 RocketMQ-阿里云 https://help.aliyun.com/document_detail/29533.html

2019-01-17 11:00:40

本文主要对消息队列 RocketMQ 涉及的专有名词及术语进行定义和解析,方便您更好地理解相关概念并使用消息队列 RocketMQ。

Topic

消息主题,一级消息类型,通过 Topic 对消息进行分类。详情请见Topic 与 Tag 最佳实践

Message

消息,消息队列中信息传递的载体。

Message ID

消息的全局唯一标识,由消息队列 RocketMQ 系统自动生成,唯一标识某条消息。

Message Key

消息的业务标识,由消息生产者(Producer)设置,唯一标识某个业务逻辑。

Tag

消息标签,二级消息类型,用来进一步区分某个 Topic 下的消息分类。详情请见Topic 与 Tag 最佳实践

Producer

消息生产者,也称为消息发布者,负责生产并发送消息。

Producer 实例

Producer 的一个对象实例,不同的 Producer 实例可以运行在不同进程内或者不同机器上。Producer 实例线程安全,可在同一进程内多线程之间共享。

Consumer

消息消费者,也称为消息订阅者,负责接收并消费消息。

Consumer 实例

Consumer 的一个对象实例,不同的 Consumer 实例可以运行在不同进程内或者不同机器上。一个 Consumer 实例内配置线程池消费消息。

Group

一类 Producer 或 Consumer,这类 Producer 或 Consumer 通常生产或消费同一类消息,且消息发布或订阅的逻辑一致。

Group ID

Group 的标识。

Exactly-Once 投递语义

Exactly-Once 投递语义是指发送到消息系统的消息只能被消费端处理且仅处理一次,即使生产端重试消息发送导致某消息重复投递,该消息也在消费端也只被消费一次。详情请见Exactly-Once 投递语义

集群消费

一个 Group ID 所标识的所有 Consumer 平均分摊消费消息。例如某个 Topic 有 9 条消息,一个 Group ID 有 3 个 Consumer 实例,那么在集群消费模式下每个实例平均分摊,只消费其中的 3 条消息。详情请见集群消费和广播消费

广播消费

一个 Group ID 所标识的所有 Consumer 都会各自消费某条消息一次。例如某个 Topic 有 9 条消息,一个 Group ID 有 3 个 Consumer 实例,那么在广播消费模式下每个实例都会各自消费 9 条消息。详情请见集群消费和广播消费

定时消息

Producer 将消息发送到消息队列 RocketMQ 服务端,但并不期望这条消息立马投递,而是推迟到在当前时间点之后的某一个时间投递到 Consumer 进行消费,该消息即定时消息。详情请见定时和延时消息

延时消息

Producer 将消息发送到消息队列 RocketMQ 服务端,但并不期望这条消息立马投递,而是延迟一定时间后才投递到 Consumer 进行消费,该消息即延时消息。详情请见定时和延时消息

事务消息

消息队列 RocketMQ 提供类似 X/Open XA 的分布事务功能,通过消息队列 RocketMQ 的事务消息能达到分布式事务的最终一致。详情请见事务消息

顺序消息

消息队列 RocketMQ 提供的一种按照顺序进行发布和消费的消息类型, 分为全局顺序消息和分区顺序消息。详情请见顺序消息

全局顺序消息

对于指定的一个 Topic,所有消息按照严格的先入先出(FIFO)的顺序进行发布和消费。详情请见顺序消息

分区顺序消息

对于指定的一个 Topic,所有消息根据 sharding key 进行区块分区。同一个分区内的消息按照严格的 FIFO 顺序进行发布和消费。Sharding key 是顺序消息中用来区分不同分区的关键字段,和普通消息的 key 是完全不同的概念。详情请见顺序消息

消息堆积

Producer 已经将消息发送到消息队列 RocketMQ 的服务端,但由于 Consumer 消费能力有限,未能在短时间内将所有消息正确消费掉,此时在消息队列 RocketMQ 的服务端保存着未被消费的消息,该状态即消息堆积。

消息过滤

消费者可以根据消息标签(Tag)对消息进行过滤,确保消费者最终只接收被过滤后的消息类型。消息过滤在消息队列 RocketMQ 的服务端完成。详情请见消息过滤

消息轨迹

在一条消息从生产者发出到订阅者消费处理过程中,由各个相关节点的时间、地点等数据汇聚而成的完整链路信息。通过消息轨迹,您能清晰定位消息从生产者发出,经由消息队列 RocketMQ 服务端,投递给消息消费者的完整链路,方便定位排查问题。详情请见消息轨迹简介

重置消费位点

以时间轴为坐标,在消息持久化存储的时间范围内(默认 3 天),重新设置消息消费者对其订阅 Topic 的消费进度,设置完成后订阅者将接收设定时间点之后由消息生产者发送到消息队列 RocketMQ 服务端的消息。详情请见重置消费位点

死信队列

死信队列用于处理无法被正常消费的消息。当一条消息初次消费失败,消息队列 RocketMQ 会自动进行消息重试;达到最大重试次数后,若消费依然失败,则表明消费者在正常情况下无法正确地消费该消息,此时,消息队列 RocketMQ 不会立刻将消息丢弃,而是将其发送到该消费者对应的特殊队列中。

消息队列 RocketMQ 将这种正常情况下无法被消费的消息称为死信消息(Dead-Letter Message),将存储死信消息的特殊队列称为死信队列(Dead-Letter Queue)。

详情请见死信队列

消息路由

消息路由常用于不同地域之间的消息同步,保证地域之间的数据一致性。消息队列 RocketMQ 的全球消息路由功能依托阿里云优质基础设施实现的高速通道专线,可以高效地实现国内外不同地域之间的消息同步复制。详情请见全球消息路由

广播消费:允许一个 Group ID 所标识的所有 Consumer 都会各自消费某条消息一次。的更多相关文章

  1. ExpandableListView(三)只展开一个group,没有child不展开group

    本文是自己在实践中,发现的问题. 有时候想让界面更加的人性化,就要实现很多的效果,比如只展开一个group,在点击下个group的同时,关闭之前的group 在一个ExpandableListView ...

  2. 搜索jar包 出现很多 Artifact Id相同 但Group Id不同 的包

    举例:将传统本地 javassit-3.17.1-GA.jar包 改成maven引用,pom中 ---Add 输入javassit 搜索 这时候会搜索出超级多 Artifact Id相同 但Group ...

  3. 一个表中的id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数

    一个表中的id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数 select id ,Count(*) from table_name group by id having count( ...

  4. 来吧,自己动手撸一个分布式ID生成器组件

    在经过了众多轮的面试之后,小林终于进入到了一家互联网公司的基础架构组,小林目前在公司有使用到架构组研究到分布式id生成器,前一阵子大概看了下其内部的实现,发现还是存在一些架构设计不合理之处.但是又由于 ...

  5. 如何设计一个分布式 ID 发号器?

    大家好,我是树哥. 在复杂的分布式系统中,往往需要对大量的数据和消息进行唯一标识,例如:分库分表的 ID 主键.分布式追踪的请求 ID 等等.于是,设计「分布式 ID 发号器」就成为了一个非常常见的系 ...

  6. Android 通过广播启动另一个应用的Activity

    需求:现在有应用A和应用B,我需要在A应用中启动B应用中的某个Activity 实现:A应用中的Activity发送广播,关键代码如下: String broadcastIntent = " ...

  7. 微信分组群发图文40152,微信分组群发图文invalid group id hint

    微信分组群发40152,微信分组群发invalid group id hint >>>>>>>>>>>>>>> ...

  8. 写一个根据id字段查找记录的缓存函数(javascript)

    前不久在参加面试的时候遇到了这样一道题,"写一个根据id字段查找记录的缓存函数,如果之前查过,则直接返回之前查找过的对象,而无须重新查找".当时由于时间较短加上时间比较紧张,考虑并 ...

  9. 传递一个父id返回所有子id的用法,可用于删除父级以下的所有子级

    先在common文件夹建立一个function.php文件,然后写一个递归函数,传递一个父id返回所有子id,如下: function getChildrenId($node,$pid){ $arr= ...

随机推荐

  1. Atitit 类库冲突 解决方案

    Atitit 类库冲突 解决方案 表现情况,找到不某些方法 类等,一个情况是真的找不到,一个情况是加载了错误的jar,导致正确的jar无法加载.. 1.1. 查找现在ide正在使用的jar1 1.2. ...

  2. [k8s]kube-dns/dashboard排错历险记(含sa加载用法/集群搭建)

    kube-dns原理 参考: 组件架构看这个就够了 http://cizixs.com/2017/04/11/kubernetes-intro-kube-dns 设置细节看这个就够了 http://b ...

  3. ThinkPad T420 Fn+F5

    关于F5,可做如下设置:     1)官网win7系统下载SIhotkey[8jvu39ww].exe:最新版本的我没测试,应该也可以用.     2)双击安装,并按程序安装,直到要你选择安装on s ...

  4. 【iCore1S 双核心板_ARM】例程十二:DMA实验——存储器到存储器的传输

    实验原理: DAM(直接存储器访问)传输不需要占用CPU,可以在存储器至存储器实现高速的数据 传输.本实验采用DAM2控制器的数据流0,选用通道0进行数据传输.通过LED的颜色来 判断传输是否成功. ...

  5. 教你一招:修复win7 系统自带的截图工具损坏

    这个问题经常见,原因是注册表没有导入. 修复很简单. 打开资源管理器,在C盘中搜索到 tpcps.dll ,在其中选一个右击,选择注册dll,然后截图工具就被修复了. 有时候便签也会出现类似问题,方法 ...

  6. git初始化本地项目并推送到git服务器

    1.创建本地项目,在项目根目录执行git init命令 git init 2.在git服务器上创建一个仓库,这里使用GitHub创建一个仓库. 3.执行git remote add origin &l ...

  7. 执行start-dfs.sh后,datenode没有启动的解决办法

    执行start-dfs.sh后,datenode没有启动,很大一部分原因是因为在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format) ...

  8. RR算法 调度

    RR算法是使用非常广泛的一种调度算法. 首先将所有就绪的队列按FCFS策略排成一个就绪队列,然后系统设置一定的时间片,每次给队首作业分配时间片.如果此作业运行结束,即使时间片没用完,立刻从队列中去除此 ...

  9. Java如何从IP地址查找主机名?

    在Java编程中,如何从IP地址查询出主机名? 以下示例显示了如何通过net.InetAddress类的InetAddress.getByName()方法将指定的IP地址查到主机名称. package ...

  10. ABBYY FineReader Pro for Mac有哪些特性(上)

    使用ABBYY FineReader Pro for Mac轻松转换纸质文档.PDF文件和数字文本照片为可编辑和可搜索的文件,再也不需要手动重新输入或格式化了,相反,可以编辑.搜索.共享.归档和复制文 ...