![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RocketMQ源码阅读
文章平均质量分 94
阅读RocketMQ源码
迷思特王
这个作者很懒,什么都没留下…
展开
-
RocketMQ源码阅读-九-自定义过滤规则Flitersrv
Filtersrv ,负责自定义规则过滤 Consumer 从 Broker 拉取的消息。减少了 Broker 的负担减少了 Consumer 接收无用的消息多了一层 Filtersrv 网络开销Flitersrv为了减少Broker的负担,且减少Consumer接收无用消息而生。Flitersrv作为中间层,Consumer订阅时传过滤类给Broker,Broker将过滤类传给Flitersrv,Flitersrv处理并实例化过滤类。原创 2024-01-25 22:56:44 · 864 阅读 · 0 评论 -
RocketMQ源码阅读-八-定时消息和消息重试
本篇分析了RocketMQ的定时消息的处理逻辑。RocketMQ不支持任意时间的延迟,只支持固定时间,因为性能考虑Producer发送定时消息只是调用setDeliveryTimestamp指定延迟时间或等级Broker会先将定时消息,存储在特定的Topic,名字格式为 SCHEDULE_TOPIC_XXXXBroker会启动一个定时任务,每1000ms执行一次,轮询 SCHEDULE_TOPIC_XXXX 中的消息,通过tagsCode过滤,将到期的消息发送到CommitLog。原创 2024-01-25 22:54:35 · 774 阅读 · 0 评论 -
RocketMQ源码阅读-七-高可用
Rocket的高可用包括NameServer和Broker的高可用,以及Producer和Consumer与他们的通信。RocketMQ实现高可用的架构如上图。Broker通过一个Master和0-N个Slave实现一个分组多个Broker分组,行程一个集群,每个Broker分组之间互相没有联系,不进行通信pro。原创 2024-01-25 22:53:25 · 859 阅读 · 0 评论 -
RocketMQ源码阅读-十-事务消息
本篇分析了RocketMQ关于事务消息的实现。Producer发送事务消息会先发送一个half消息,并注册一个事务消息回查监听器本地事务提交后,Producer会发送half消息提交消息本地事务回滚,Producer会发送half消息回滚消息若因网路等问题,迟迟没有收到提交或回滚消息,Broker会发起事务消息反查Producer收到事务消息反查请求,执行创建事务消息时注册的监听器,查询本地消息的状态,根据本地消息的状态决定是Commit还是Rollback事务消息。原创 2024-01-25 22:57:38 · 860 阅读 · 0 评论 -
RocketMQ源码阅读-六-Message顺序发送与消费
本篇分析了RocketMQ对于普通顺序消息和严格顺序消息的消费流程。普通顺序消息:Producer会将相同的消息发送到相同的消息队列(性能好),在消费失败时会放回队列重新消费,但是先消费其他的。严格顺序消息:在普通顺序消息的基础上,Consumer严格顺序消费。此种消费方式,在消费失败时会暂定消费一会再重新消费,直到达到一定的失败次数限制(默认16次),会发回到Broker的死信队列,然后跳过,继续消费后面的消息。原创 2024-01-25 09:33:31 · 804 阅读 · 0 评论 -
RocketMQ源码阅读-三-Message消息存储
在Broker消息接收一篇中,分析到Broker接收到消息,最终会调用CommitLong#putMessage方法存储消息。本篇来分析CommitLong#putMessage存储消息的流程。原创 2024-01-14 17:40:05 · 922 阅读 · 0 评论 -
RocketMQ源码阅读-五-Message拉取与消费-Consumer篇
RocketMQ提供了两种Consumer:PushConsumer(接口MQPushConsumer)涉及到的组件如下:他们之前的关系:查看官方的example方法。在example model中:示例中新建了一个DefaultMQPushConsumer并通过subscribe方法完成消息订阅,并通过registerMessageListener方法注册了一个消息监听器。以上便是注册一个Consumer的流程。PushConsumer对应接口MQPushConsumer,其默认实现为DefaultM原创 2024-01-16 22:45:39 · 558 阅读 · 0 评论 -
RocketMQ源码阅读-四-Message拉取与消费-Broker篇
上一篇分析到Message由CommitLog存储到了MappedFile 文件中。消费者就可以去拉取并消费Message了。Message的拉取与消费是由Broker和Consume共同完成的,本篇先来看Broker对于Message拉取的处理代码。DefaultMessageStore的内部类ReputMessageService完成消息的重放,将CommitLog存储到了MappedFile的Message进行重放,存储到ConsumeQueue中。Rocket框架图:借用一张图(出处。原创 2024-01-15 21:31:28 · 1028 阅读 · 0 评论 -
RocketMQ源码阅读-二-Broker消息接收
Broker接收发送的消息。Broker在RocketMQ中也是一个独立的Model,rocketmq-broker。Broker的核心类为SendMessageProcessor。原创 2024-01-14 16:29:00 · 1177 阅读 · 0 评论 -
RocketMQ源码阅读-一-Producer消息发送
Producer是消息的生产者。Producer和Consummer对Rocket来说都是Client,Server是Broker。客户端在源码中是一个单独的Model,目录为rocketmq/client。类DefaultMQProducer是Producer的默认入口实现类。继承了类ClientConfig,客户端配置类,存储上下文配置信息。实现接口MQProducer:定义了Producer对外提供的接口,也就是所有的发送消息的方法,同时MQProducer接口继承了MQAdmin接口。原创 2024-01-14 16:25:10 · 930 阅读 · 0 评论