![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
队列
文章平均质量分 80
snail-jie
问题驱动,慢慢沉淀
展开
-
RocketMQ事务消息的源码摸索
RocketMQ事务消息原创 2022-01-15 18:26:39 · 765 阅读 · 0 评论 -
RocketMQ消费端拉取消息流程源码分析
客户端发送拉取消息请求消费端向broker发送请求:RemotingCommand1.1 请求code在RequestCode中定义,11代表拉取消息(PULL_MESSAGE)1.2 在broker解码后发现,customHeader属性为空,点进去后发现被transient修饰,不会被序列化1.3 请求ID:opaque --> 响应与请求相同(在源码调试时很有用)Broker处理拉取消息请求入口在NettyRemotingServer#start方法,标准的Netty服务端原创 2021-12-24 14:51:40 · 843 阅读 · 0 评论 -
RocketMQ无法消费消息问题的排查(获取不到消费组信息导致)
问题描述在生产服务器搭了一套rocketmq环境,在生产服务器上能测试发送和接受消息都正常,并且观察namesrv和broker的日志,都没有发现异常日志。但就是在本地无法消费,网络是通的(ping和telnet都成功)跟进问题总结在跟代码发现订阅主题下的消费组的客户端数为空(为什么呢?)1.1 观察消费端是否有下面的日志if (null == cidAll) { log.warn("doRebalance, {} {}, get consumer id list failed", cons原创 2021-11-18 10:17:24 · 14655 阅读 · 0 评论 -
搭建RocketMq源码调式环境
前言本人因想写一个日志收集服务,想了解一下RocketMQ是怎么去接收消息,所以拉取源码进行学习本教程摘抄于丁威的《RocketMQ技术内幕》的章节启动NameServer运行namesrv模块的NamesrvStartup#main方法IDEA配置ROCKETMQ_HOME环境变量在RocketMQ运行主目录中创建conf、logs、store三个文件夹从RocketMQ distribution部署目录中将broker.conf、logback_broker.xml、logbac原创 2021-07-09 14:40:33 · 405 阅读 · 0 评论 -
Kafka生产者之JAVA NIO分析
前序前面两篇文章,基于元数据获取以及发送消息总体做了分析,本篇博文基于其中Kafka对于JAVA NIO的应用进行分析Java NIO理论知识是参考美团公众号的文章:https://zhuanlan.zhihu.com/p/23488863对理论知识有一定了解后,抽取了Kafka生产者对NIO的应用代码并进行了上传JAVA NIONIO(Non-blocking I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础传统BIO(Blocking I/O)模型分析(一个连接一个线程原创 2021-07-04 18:52:07 · 695 阅读 · 0 评论 -
KafkaProducer发送消息源码解析
Kafka发送消息整体归纳入口KafkaProducer#doSend将消息按主题分区维护追加缓存区Sender线程调用sendProducerData方法从缓存区中取出符合要求的消息发送Broker中KafkaProducer#doSend分析总结KafkaProducer#doSend方法获取topic的分区列表序列化key对消息内容进行序列化根据分区负载算法计算本次消息发送该发往的分区如果是消息头信息(RecordHeaders),则设置为只读根据使用的版本号,按照消息协议来原创 2021-07-02 17:59:22 · 242 阅读 · 0 评论 -
Kafka生产者源码初识
Kafka生产者整体架构整个生产者客户端主要有两个线程:主线程和Sender线程RecordAccumulator用来缓存消息,如果创建消息的速度过快,超过sender发给Kafka服务器的速度,会导致缓存空间不足实现上述架构图的源码在初始化生产者时,会初始化一个Sender线程并启动(下截图为KafkaProducer构造方法)在发送前先经过拦截器过滤序列化消息、选择分区以及添加消息累加器3.1 在选择分区时,需要注意分区信息是通过元数据中获取(下面为详细分析)分区消息源码原创 2021-06-27 12:48:22 · 532 阅读 · 0 评论