RocketMQ
【原】编程界的小学生
什么都要会一点,这样装起逼来不会尴尬。
展开
-
RocketMQ成神之路目录
RocketMQ成神之路目录傻子都看得明白的RocketMQ安装以及测试RocketMQ的核心概念以及架构图RocketMQ之Java API大全精讲RocketMQ事务消息原理以及代码精讲RocketMQ顺序消息原理以及代码RocketMQ的Producer生产消息源码剖析RocketMQ的Producer发送消息queue的选择源码剖析RocketMQ的Broker接收消息以及消息持久化存储源码RocketMQ怎么保证的消息不丢失(吊打面试官)?源码剖析RocketMQ为什么同一个消原创 2020-07-20 15:15:42 · 712 阅读 · 0 评论 -
RocketMQ经典高频面试题大全(附答案)
编程界的小学生0、彩蛋1、说说你们公司线上生产环境用的是什么消息中间件?2、多个mq如何选型?3、为什么要使用MQ?4、RocketMQ由哪些角色组成,每个角色作用和特点是什么?5、RocketMQ中的Topic和JMS的queue有什么区别?6、RocketMQ Broker中的消息被消费后会立即删除吗?追问:那么消息会堆积吗?什么时候清理过期消息?7、RocketMQ消费模式有几种?8、消费消息是push还是pull?追问:为什么要主动拉取消息而不使用事件监听方式?9、broker如何处理拉取请求的?1原创 2020-07-20 15:06:01 · 27711 阅读 · 6 评论 -
RocketMQ集群流程以及核心概念
编程界的小学生一、为什么要集群二、单M模式1、特点2、图解三、多M模式1、特点2、图解四、多M多S模式1、异步复制2、同步双写3、图解五、queue的分布一、为什么要集群单点存在单点故障问题集群可以分担压力,提高QPS主从可以保证消息可靠性,比如只有M没S。M磁盘坏了,那未被消费的消息都丢了。而S可以作为备份。二、单M模式1、特点只有一个Master节点,所以单点故障是致命缺点。优点:配置简单,方便部署。缺点:单点故障,一旦Broker重启或者直接宕机了,那会导致整个服务不可用。原创 2020-07-20 15:04:39 · 420 阅读 · 0 评论 -
手把手搭建RocketMQ双主双从同步集群&&Dledger搭建
编程界的小学生一、环境准备1、补充2、机器二、开始搭建1、说明2、古老的集群搭建2.1、准备2.2、Master12.3、Slave12.4、Master22.5、Slave22.6、总结2.7、启动2.7.1、启动namesrv2.7.2、启动broker2.8、验证2.9、问题3、Dledger搭建3.1、说明3.2、搭建3.2.1、官方搭建手册3.2.2、准备3.2.3、配置3.2.4、配置说明3.2.5、启动3.2.6、验证3.3、补充三、常见问题1、Lock failed,MQ already s原创 2020-07-20 15:00:50 · 1248 阅读 · 0 评论 -
RocketMQ的Consumer负载均衡源码
编程界的小学生一、问题描述二、源码剖析1、RebalancePushImpl2、RebalanceImpl2.1、rebalanceByTopic3、AllocateMessageQueueAveragely3.1、allocate3.2、解释4、补充三、何时Rebalance一、问题描述面试官:RocketMQ的Consumer是如何做的负载均衡?比如:5个Consumer进程同时消费一个Topic,这个Topic只有4个queue会出现啥情况?反之Consumer数量小于queue的数据是啥情况?原创 2020-07-20 14:56:56 · 366 阅读 · 0 评论 -
源码剖析RocketMQ为什么同一个消费组设置不同tag会出现奇怪现象
编程界的小学生一、问题复现1、描述2、代码2.1、Consumer2.2、Producer3、结果二、问题答案三、源码验证1、调用链2、源码2.1、registerConsumer2.2、两个问题一、问题复现1、描述两个一样的Consumer Group的Consumer订阅同一个Topic,但是是不同的tag,Consumer1订阅Topic的tag1,Consumer2订阅Topic的tag2,然后分别启动。这时候往Topic的tag1里发送10条数据,Topic的tag2里发送10条。目测应该是原创 2020-07-10 19:47:30 · 2129 阅读 · 0 评论 -
RocketMQ怎么保证的消息不丢失(吊打面试官)?
编程界的小学生一、消息发送过程二、Producer生产阶段1、解决方案一1.1、说明1.2、源码2、解决方案二2.1、说明2.2、源码3、解决方案三3.1、说明4、总结三、Broker存储阶段1、解决方案一2、解决方案二3、总结四、Consumer消费阶段1、解决方案一2、解决方案二面试官常常喜欢问:Rocket MQ 怎么保证的消息不丢失?我想说:就这?我笑了。一、消息发送过程我们将消息流程分为如下三大部分,每一部分都有可能会丢失数据。生产阶段:Producer通过网络将消息发送给Bro原创 2020-07-07 19:41:55 · 2853 阅读 · 8 评论 -
RocketMQ的Broker接收消息以及消息持久化存储源码
编程界的小学生一、原理1、消息存在哪了?2、关键类解释2.1、MappedFile2.2、MappedFileQueue2.3、CommitLog二、Broker接收消息1、调用链2、processRequest3、asyncProcessRequest4、asyncSendMessage三、Broker消息存储(持久化)1、asyncPutMessage2、commitLog.asyncPutMessage3、appendMessagesInner4、doAppend5、submitFlushReques原创 2020-07-07 19:40:08 · 845 阅读 · 0 评论 -
RocketMQ的核心概念以及架构图
编程界的小学生一、架构图以及角色1、架构图2、角色2.1、Broker2.2、Nameserver2.3、Producer2.4、Consumer3、核心流程二、核心概念1、Message2、topic3、queue4、Tag5、Message Model6、Message Order7、Producer Group8、Consumer Group三、ACK四、消费模式1、集群模式(Clustering)1.1、图解1.2、特点2、广播模式(Broadcasting)2.1、图解2.2、特点一、架构图以及原创 2020-07-07 19:28:22 · 4712 阅读 · 4 评论 -
RocketMQ的Producer发送消息queue的选择源码剖析
编程界的小学生一、说明二、源码1、send(msg, mq)1.1、使用场景1.2、原理剖析1.2.1、SelectMessageQueueByRandom1.2.2、SelectMessageQueueByHash1.2.3、SelectMessageQueueByMachineRoom1.2.4、自定义算法1.3、调用链2、send(msg)2.1、使用场景2.2、原理剖析2.2.1、不启用broker故障延迟2.2.2、启用broker故障延迟2.3、调用链2.4、总结三、总结1、疑问2、面试一、说原创 2020-07-07 19:37:33 · 679 阅读 · 0 评论 -
RocketMQ的Producer生产消息源码剖析
编程界的小学生一、Demo二、源码剖析1、准备工作1.1、new DefaultMQProducer()1.2、setNamesrvAddr()2、启动2.1、start()2.1.1、defaultMQProducerImpl.start()2.1.2、mQClientFactory.start()2.2、总结3、发送消息3.1、new Message3.2、producer.send(msg)3.2.1、sendDefaultImpl4、面试题5、设计模式5.1、单例模式5.2、状态模式5.3、门面模式原创 2020-07-07 19:34:55 · 439 阅读 · 0 评论 -
精讲RocketMQ顺序消息原理以及代码
编程界的小学生一、顺序消息解释1、概述2、图解3、再次分析二、解决方案1、方案一2、代码一2.1、生产者2.2、消费者2.3、输出结果3、情况二一、顺序消息解释1、概述RocketMQ的消息是存储到Topic的queue里面的,queue本身是FIFO(First Int First Out)先进先出队列。所以单个queue是可以保证有序性的。但是问题是1个topic有N个queue,作者这么设计的好处也很明显,天然支持集群和负载均衡的特性,将海量数据均匀分配到各个queue上,你发了10条消息到同一原创 2020-07-07 19:32:29 · 872 阅读 · 0 评论 -
精讲RocketMQ事务消息原理以及代码
编程界的小学生一、事务消息的由来1、案例2、问题3、方案二、事务消息的原理1、原理图解2、详细过程三、事务消息实现流程1、实现流程2、补救方案四、代码实例1、代码2、结果3、管控台4、结果分析五、疑问一、事务消息的由来1、案例引用官方的购物案例:小明购买一个100元的东西,账户扣款100元的同时需要保证在下游的积分系统给小明这个账号增加100积分。账号系统和积分系统是两个独立是系统,一个要减少100元,一个要增加100积分。如下图:2、问题账号服务扣款成功了,通知积分系统也成功了,但是积分增原创 2020-07-07 19:30:49 · 729 阅读 · 0 评论 -
RocketMQ之Java API大全
编程界的小学生一、Java API1、Producer1.1、send(同步)1.2、send(批量)1.3、sendCallBack(异步)1.4、sendOneway1.5、效率对比2、Consumer2.1、CLUSTERING2.2、BROADCASTING2.3、两种模式对比3、TAG&&KEY二、常见错误1、sendDefaultImpl call timeout1.1、异常1.2、解决2、No route info of this topic2.1、异常2.2、解决一、Jav原创 2020-07-07 19:26:24 · 2181 阅读 · 3 评论 -
傻子都看得明白的RocketMQ安装以及测试
编程界的小学生一、RocketMQ的安装1、文档2、下载3、准备工作3.1、解压3.2、安装jdk4、启动4.1、启动namesrv4.2、启动broker4.3、启动成功标识二、RocketMQ控制台的安装1、官方文档2、下载源码3、修改配置(可选)4、编译打包5、启动控制台三、测试0、准备工作1、发送消息2、消费消息3、控制台学任何技术都是两步骤:1.搭建环境2.helloworld我也不例外,直接搞起来。一、RocketMQ的安装1、文档官方网站http://rocketmq.ap原创 2020-07-05 20:05:27 · 2425 阅读 · 0 评论