mq
普通网友
这个作者很懒,什么都没留下…
展开
-
消息队列mq 知识点05 RocketMQ
https://zhuanlan.zhihu.com/p/93602392 rocketMQ相关原创 2020-04-26 15:40:25 · 169 阅读 · 0 评论 -
消息队列mq 知识点04 RocketMQ
如何保证RabbitMQ消息的顺序性?拆分多个 queue,每个 queue 一个 consumer,就是多一些 queue 而已,确实是麻烦点;或者就一个 queue 但是对应一个 consumer,然后这个 consumer 内部用内存队列做排队,然后分发给底层不同的 worker 来处理。消息怎么路由?消息提供方->路由->一至多个队列消息发布到交换器时,消息...原创 2020-05-10 19:55:22 · 211 阅读 · 0 评论 -
消息队列mq 知识点03
消息队列的面试题51、面试题如何保证消息的顺序性?2、面试官心里分析其实这个也是用MQ的时候必问的话题,第一看看你了解不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这个生产系统中常见的问题。3、面试题剖析我举个例子,我们以前做过一个mysql binlog同步的系统,压力还是非常大的,日同步数据要达到上亿。mysql -> mysql,常见的一点在于说大...原创 2020-05-23 10:00:26 · 99 阅读 · 0 评论 -
消息队列mq 知识点02
消息队列的面试题31、面试题如何保证消息不被重复消费啊(如何保证消息消费时的幂等性)?2、面试官心里分析其实这个很常见的一个问题,这俩问题基本可以连起来问。既然是消费消息,那肯定要考虑考虑会不会重复消费?能不能避免重复消费?或者重复消费了也别造成系统异常可以吗?这个是MQ领域的基本问题,其实本质上还是问你使用消息队列如何保证幂等性,这个是你架构里要考虑的一个问题。面试官问你,肯...原创 2020-01-31 16:32:45 · 66 阅读 · 0 评论 -
消息队列mq 知识点01
消息队列的面试题1问题:为什么使用消息队列啊?消息队列有什么优点和缺点啊?kafka、activemq、rabbitmq、rocketmq都有什么区别以及适合哪些场景?1.为什么使用消息队列啊?通用回答是:我们公司有个什么业务场景,这个业务场景有个什么技术挑战,如果不用MQ可能会很麻烦,但是你现在用了MQ之后带给了你很多的好处。比较核心的有3个业务场景:解耦、异步、削峰解耦:...原创 2020-01-30 22:42:52 · 105 阅读 · 0 评论 -
消息队列mq 深入学习
https://blog.csdn.net/qq_29676623/article/details/85108070?utm_source=app1. 为什么使用消息队列?消息队列的优点和缺点?kafka、activemq、rabbitmq、rocketmq都有什么优缺点?比较核心的有3个业务场景:解耦、异步、削峰...原创 2020-01-12 09:34:39 · 64 阅读 · 0 评论 -
RocketMQ 源码分析 14 事务消息02
上节已经梳理了RocketMQ发送事务消息的流程(基于二阶段提交),本节将继续深入学习事务状态消息回查,我们知道,第一次提交到消息服务器,消息的主题被替换为RMQ_SYS_TRANS_HALF_TOPIC,当执行本地事务,如果返回本地事务状态为UN_KNOW时,第二次提交到服务器时将不会做任何操作,也就是消息还存在与RMQ_SYS_TRANS_HALF_TOPIC主题中,并不能被消息消费者消费,...原创 2019-10-02 20:54:08 · 114 阅读 · 0 评论 -
RocketMQ 源码分析 13 事务消息01
executeLocalTransaction:方法,记录本地事务的事务状态,这里其实现就是循环设置事务消息的状态为0,1,2,demo中是把消息的状态数据存放在一个Map中,实际应用,应该会持久化消息的事务状态,例如数据库或缓存。其关键是checkLocalTransaction,会查本地事务表,判断事务的状态如为0:UNKNOW,1:COMMIT_MESSAGE;ROLLBACK_ME...原创 2019-10-02 20:23:37 · 146 阅读 · 0 评论 -
RocketMQ 源码分析 12 过期清除 && 高可用 && 读写分离
由于RocketMQ操作CommitLog、ConsumeQueue文件,都是基于内存映射方法并在启动的时候,会加载commitlog、ConsumeQueue目录下的所有文件,为了避免内存与磁盘的浪费,不可能将消息永久存储在消息服务器上,所以需要一种机制来删除已过期的文件。RocketMQ清除过期文件的方法是:如果非当前写文件在一定时间间隔内没有再次被更新,则认为是过期文件,可以被删除,Ro...原创 2019-10-02 19:59:27 · 272 阅读 · 0 评论 -
RocketMQ 源码分析 11 消息顺序消费
1、消息队列负载RocketMQ 在同一个 JVM 进程拥有一个 clientConfigId(客户端ID),该JVM进程中不同的消息消费组的消息客户端ID相同,因为在JVM进程中对于每一个 ClientConfig 只会实例化一个 MQClientInstance。消息消费的第一个步骤是首先要为消费组内的所有消息者分配消息消费队列。RocetMQ 中通过RebalanceService线程实现...原创 2019-10-02 19:34:01 · 146 阅读 · 0 评论 -
RocketMQ 源码分析 10 RocketMQ消息拉取拉模式PULL
1、RocketMQ 推拉模式简介消费者与消息存储方 Broker一般有两种通信机制:推(PUSH)、拉(PULL)。推模式:消息发送者将消息发送到Broker,然后Broker主动推送给订阅了该消息的消费者。拉模式:消息发送者将消息发送到Broker上,然后由消息消费者自发的向Broker拉取消息。RocketMQ 推拉机制实现:严格意义上来讲,RocketMQ 并没有实现 PUSH ...原创 2019-10-02 17:45:23 · 389 阅读 · 0 评论 -
RocketMQ 源码分析02 NameServer
broker与配置中心NameServer保持长连接NameServerController的初始化方法 initialize 1.this.kvConfigManager.load(); 加载kv配置 2.创建remotingExecutor线程池 3.开启定时线程扫描NotActive状态的broker, channel超时,然后就销毁对应的channel和bro...原创 2020-02-22 16:23:30 · 137 阅读 · 0 评论 -
RocketMQ 源码分析03 broker 启动
先看BrokerStartUp方法一、createBrokerController 创建brokerController1.初始化NettySystemConfig 1.1 如果配置的发送sndbuf和接收rcvbuf为空,就设置默认大小 1.2 构造options,然后解析成命令行commandLine,如果为空,系统就退出 1.3 设置监听listenPort...原创 2019-09-30 21:40:39 · 209 阅读 · 0 评论 -
RocketMQ 源码分析04消息发送
消息发送DefaulMQProducerImpl一、start方法对于start方法1. 状态是CREATE_JUST,代表刚刚创建,没有运行 1.1 检查配置config 1.2 创建mqClientFactory 1.3 注册producer,也就是放入到本地缓存producerTable中 1.4 然后设置producer的主题topicKe...原创 2019-10-01 16:27:22 · 281 阅读 · 0 评论 -
RocketMQ 源码分析 05 消息存储
Broker 接收到生产者发送消息请求后如何存储在 Broker 上核心实现类DefaultMessageStore先看核心方法putMessage1.校验不能是slave,只允许写master2.校验message store是可写的3.校验mq的topic长度不能超过最大限制4.校验mq属性不能过长5.检测操作系统页写入是否繁忙6.将日志写入Commit...原创 2019-10-01 20:57:02 · 175 阅读 · 0 评论 -
RocketMQ 源码分析 06 消息消费01
消息消费方式 : 拉取、推送从何处开始消费,可选值:1)CONSUME_FROM_LAST_OFFSET:上一次消费偏移量2)CONSUME_FROM_FIRST_OFFSET:从头开始3)CONSUME_FROM_TIMESTAMP:从某个时间点开始消费进度存储其实现类为:OffsetStoreoffsetStore。消费者需要记录消息消费的进度:1)广播模式:广播模式由于每...原创 2019-10-01 22:17:01 · 175 阅读 · 0 评论 -
RocketMQ 源码分析 07 消息消费02
下面重点分步骤来详细探究 MQClientInstance.doRebalance 方法的执行流程。2.1.1 MQClientInstance.doRebalance1、根据 topic 来进行负载。2、移除 MessageQueue,如果 MesageQueue 的 topic 不在订阅的主题中,接下来重点关注 rebalanceByTopic 方法。RebalanceImpl...原创 2019-10-02 11:14:40 · 123 阅读 · 0 评论 -
RocketMQ 源码分析 08 根据commitLog转发consumequeue和indexFile
RocketMQ 存储机制回顾本文主要从源码的角度分析 Rocketmq 消费队列 ConsumeQueue 物理文件的构建与存储结构,同时分析 RocketMQ 索引文件IndexFile 文件的存储原理、存储格式以及检索方式。RocketMQ 的存储机制是所有的主题消息都存储在 CommitLog 文件中,也就是消息发送是完全的顺序 IO 操作,加上利用内存文件映射机制,极大的提供的 IO...原创 2019-10-02 15:40:35 · 684 阅读 · 1 评论 -
RocketMQ 源码分析 09 消息过滤
1、消息消费过滤机制1.1 根据 tagcode 过滤使用messageTag比对, 存储的Message Tag和订阅的Message Tag1.2 高级过滤使用FilterServer重点看下DefaultMessageStore#getMessage1.设置拉取偏移量,从 PullRequest 中获取,初始从消费进度中获取2.根据 topic、queueId...原创 2019-10-02 16:55:46 · 249 阅读 · 0 评论 -
RocketMQ 源码分析01 代码结构概述
原创 2019-09-29 21:08:03 · 105 阅读 · 0 评论