
RocketMQ
文章平均质量分 98
RocketMQ 基础术语,单实例节点、集群实例节点搭建旅程,顺序消息、消息可靠性保证,如何防止消息不被丢失,实战如何采用 RocketMQ 作系统架构设计
vnjohn
vnjohn,博主名字的简写,是一名专注于后端领域的程序猿,借用歌名“自己”里的歌词来时刻提醒自己要不断学习,不断思而前行:“第一要保持希望在每天清晨太阳升起,第二切记不要与自身的平凡为敌,第三与自己所处的现在促膝长谈”
展开
-
RocketMQ NettyRemotingServer、NettyRemotingClient 实例化、初始化、启动源码解析
该篇文章主要介绍在 RocketMQ remoting 底层通信模块中的 NettyRemotingServer、NettyRemotingClient 实例化、初始化、启动时源码的分析,在 BrokerController 实例化会优先构建好 Netty 客户端实例,在其初始化阶段会构建好 Netty 服务端实例,而在生产者、消费者侧,是在实例化 MQClientInstance 实例时会将 Netty 客户端实例也构建好,同时在 Broker、生产者、消费者启动时,会将对应的 Netty 服务端、客户端原创 2024-07-08 00:29:27 · 997 阅读 · 2 评论 -
RocketMQ 通信机制底层数据结构及源码解析
该篇文章主要介绍在 RocketMQ remoting 底层通信模块中的数据结构以及相关的一些源码的分析,对其客户端、服务端之间相互调用的协议、编解码进行了阐述,也说明了一下在 RocketMQ 中对于 TCP 流传输时会产生的粘包、拆包问题进行了描述以及 Netty 相关的解决 Case,最后对于 NettyRemotingServer Reactor 多线程模型设计进行了源码追踪以及模型图优化,希望对您有帮助,能够喜欢原创 2024-07-01 00:05:03 · 1006 阅读 · 2 评论 -
RocketMQ DefaultMQProducer#send 方法源码解析:生产者投递消息(二)
该篇博文主要分析几种不同方式的投递消息方式采用的核心方法,SYNC 采用的是 MQClientAPIImpl#sendMessageSync 方法处理、ASYNC 采用的是 MQClientAPIImpl#sendMessageAsync、ONEWAY 采用的是 NettyRemotingClient#invokeOneway 方法处理,而 ONEWAY、ASYNC 采用了信号量的方式去获取令牌凭证去向 Broker 发起请求,同时,由于是异步必须是要有回调存在的,所以会有一个异步调度线程去阻塞等待消息的投原创 2024-01-25 22:48:11 · 1507 阅读 · 12 评论 -
RocketMQ DefaultMQProducer#send 方法源码解析:生产者投递消息(一)
该篇博文主要先简单分析几种不同方式的投递消息方式:SYNC、ASYNC、ONEWAY,以及支持通过指定的 MessageQueue、MessageQueueSelector 方式来对消息进行投递,同步模式投递情况下是通过 DefaultMQProducerImpl#sendDefaultImpl 方法进行重试的,而在异步模式是通过 MQClientAPIImpl#onExceptionImpl 方法重试的,这在后面一篇文章展开介绍,在消息发送之前,会对消息进行压缩,确保客户端与服务端之间交互的数据包大小是最原创 2024-01-18 16:46:27 · 1395 阅读 · 16 评论 -
RocketMQ 投递消息方式以及消息体结构分析:Message、MessageQueueSelector
该篇博文主要介绍 Message 结构体有哪些以及它里面属性的作用,同步与异步发送之间的区别参数:SendCallback 回调接口,指定 Queue 投递消息:MessageQueue,生产者侧确保消息能够有序地投递:MessageQueueSelector,以及在 RocketMQ 如何保证全局有序、局部有序:生产者确保单 Queue 全局有序、生产者确保多 Queue 局部有序原创 2024-01-07 03:00:10 · 2710 阅读 · 52 评论 -
RocketMQ MQClientInstance、生产者实例启动源码分析
该篇博文主要介绍 MQClientInstance 客户端实例以及 TopicRouteData 主题元数据信息,结合 Dashboard 看会更加的清晰,后续介绍了生产者实例启动的一个过程,其中介绍了几个核心的地方:NettyRemotingClient Netty 客户端、MQClientInstance#startScheduledTask 涉及到的定时调度任务、PullMessageService 推送模式作用的类、RebalanceService 重平衡服务原创 2024-01-06 01:14:58 · 1818 阅读 · 60 评论 -
RocketMQ 生产者源码分析:DefaultMQProducer、DefaultMQProducerImpl
该篇博文主要介绍生产者侧相关的类:MQProducer 能力定义者、DefaultMQProducer 能力抽象者、DefaultMQProducerImpl 能力实现者、ClientConfig RocketMQ 客户端公共的配置类,主要围绕它们内部的参数配置以及属性先初步开展介绍了一下,后续主要在启动 Producer 以及通过 Producer 发送消息时,在生产者这一侧处理的工作原创 2024-01-02 06:49:51 · 2637 阅读 · 72 评论 -
RocketMQ 分布式事务消息实战指南:确保数据一致性的关键设计
该篇博文主要是通过实际的业务代码来进行 RocketMQ 事务消息实战,上一篇博文从 RocketMQ 事务消息的整体设计以及相关的源码的讲解,这篇通过订单生成、库存预扣减的简单例子来对事务消息的这块流程进行细粒化的业务设计,事务消息生产者的本地事务消息与补偿事务消息结合起来保证订单创建成功以后,库存才进行预扣减,希望这篇简单的 RocketMQ 事务消息实战博文能够帮助到您理解事务消息的实际应用原创 2023-11-16 17:46:08 · 6555 阅读 · 99 评论 -
保护数据完整性:探索 RocketMQ 分布式事务消息的力量
该篇博文主要分析了 RocketMQ 事务消息流程中的事务 Half 消息发送以及本地事务消息的补偿流程,重点的是结合 GitHub 部分对 RocketMQ 这块的设计部分进行整体了阐述,博主通过时序图+源码具体实现的部分对其进行了更深层次的描述,RocketMQ 源码部分在接收到事务消息时的处理过程以及在对事务消息这一块的补偿处理部分,希望能够加深你对事务消息这块的理解原创 2023-11-16 14:42:43 · 6189 阅读 · 73 评论 -
从零开始:手把手搭建 RocketMQ 单节点、集群节点实例
该篇博文初介绍了 RocketMQ 「一个开源的、高吞吐量、低延迟的消息队列系统」它的一些基础的概念信息「消息模型、消息生产者、消息消费者、主题、代理服务器、名字服务器、消费模式:拉取、推送、消息、标签等」简要概述了 Kafka vs RocketMQ 之间的区别以及它们之间的巧妙结合,最后,作为开篇,环境是演示所有操作的前提,故总结了搭建 RocketMQ 单节点、集群节点的详细步骤,在 Linux 环境上可以直接服用此过程原创 2023-08-05 19:04:36 · 5896 阅读 · 99 评论