RocketMQ 简介

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RocketMQ 简介相关的知识,希望对你有一定的参考价值。

参考技术A

RocketMQ在阿里内部叫做Metaq(最早名为Metamorphosis,中文意思 变形记 ,是作家卡夫卡的中篇小说代表作,可见是为了致敬Kafka)。

RocketMQ是Metaq3.0之后的开源版本。

Metaq在阿里巴巴集团内部、蚂蚁金服、菜鸟等各业务中被广泛使用,接入了上万个应用系统中。并平稳支撑了历年双十一大促(万亿级的消息),在性能、稳定性、可靠性等方面表现出色,在整个阿里技术体系和大中台战略中发挥着举足轻重的作用。

Metaq最终源于Kafka,早起借鉴了Kafka很多优秀的设计。但是由于Kafka是Scale语言编写而阿里系主要使用Java,且无法满足阿里的电商、金融业务场景,所以誓嘉(花名)团队用Java重新造轮子,并做了大量的改造和优化。

在此之前,淘宝有一款消息中间件名为 Notify ,目前已经逐步被Metaq所取代。

第一代的Notify主要使用了推模型,解决了事务消息;第二代的MetaQ主要使用了拉模型,解决了顺序消息和海量堆积的问题。相比起Kafka使用的Scale语言编写,RabbitMQ 使用Erlang语言编写,基于Java的RocketMQ开源后更容易被广泛的研究,以及其他大厂定制开发。

执行流程:

RocketMQ 消息订阅有两种模式,一种是Push模式(MQPushConsumer),即MQServer主动向消费端推送;另外一种是Pull模式(MQPullConsumer),即消费端在需要时,主动到MQ Server拉取。但在具体实现时, Push和Pull模式本质都是采用消费端主动拉取的方式 ,即 Consumer 轮询从 Broker 拉取消息。

优点:就是实时性高。

缺点:在于消费端的处理能力有限,当瞬间推送很多消息给消费端时,容易造成消费端的消息积压,严重时会压垮客户端。

Push 与 Pull 区别:

Push 方式里,Consumer 把长轮询的动作封装了,并注册MessageListener监听器,取到消息后,唤醒MessageListener的consumeMessage()来消费,对用户而言,感觉消息是被推送过来的。

Pull 方式里,取消息的过程需要用户自己主动调用,首先通过打算消费的 Topic 拿到 MessageQueue 的集合,遍历MessageQueue集合,然后针对每个MessageQueue批量取消息,一次取完后,记录该队列下一次要取的开始offset,直到取完了,再换另一个MessageQueue。

RocketMQ 使用长轮询机制来模拟 Push 效果,算是兼顾了二者的优点。

RocketMQ(19)——mqadmin简介

mqadmin简介

在RocketMQ安装目录的bin目录下有一个mqadmin指令,该指令可以用来对RocketMQ进行一些管理。直接运行mqadmin将出来mqadmin支持的指令。

The most commonly used mqadmin commands are:
   updateTopic          Update or create topic
   deleteTopic          Delete topic from broker and NameServer.
   updateSubGroup       Update or create subscription group
   deleteSubGroup       Delete subscription group from broker.
   updateBrokerConfig   Update broker\'s config
   updateTopicPerm      Update topic perm
   topicRoute           Examine topic route info
   topicStatus          Examine topic Status info
   topicClusterList     get cluster info for topic
   brokerStatus         Fetch broker runtime status data
   queryMsgById         Query Message by Id
   queryMsgByKey        Query Message by Key
   queryMsgByUniqueKey  Query Message by Unique key
   queryMsgByOffset     Query Message by offset
   printMsg             Print Message Detail
   pri

以上是关于RocketMQ 简介的主要内容,如果未能解决你的问题,请参考以下文章

RocketMQ(19)——mqadmin简介

RocketMQ(19)——mqadmin简介

RocketMQ入门简介

rocketMq简介以及和kafka对比

RocketMQ简介

1 RocketMQ简介