rocketmq源码阅读笔记(2)-源码调试

参考文章

RocketMq系列之Producer启动源码分析(一)

https://shared-code.com/article/130

RocketMq系列之Producer启动(一)

视频

https://www.bilibili.com/video/BV1RE411r75d?p=25&spm_id_from=pageDriver

调试

在这里插入图片描述
安装跳过测试
mvn clean install -Dmaven.test.skip=true
在这里插入图片描述

启动nameserver
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

启动broker

在这里插入图片描述

brocker.conf

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
namesrvAddr=127.0.0.1:9876


#存储路径
storePathRootDir=D:\\rocketMqTestData\\store
#commitLog 存储路径
storePathCommitLog=D:\\rocketMqTestData\\store\\commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=D:\\rocketMqTestData\\store\\consumequeue
#消息索引存储路径
storePathIndex=D:\\rocketMqTestData\\store\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\rocketMqTestData\\store\\checkpoint
#abort 文件存储路径
abortFile=D:\\rocketMqTestData\\store\\abort

addr=“127.0.0.1:9876”;
final Channel channel = this.getAndCreateChannel(addr);
if (channel != null && channel.isActive()) {

nameserver的地址: 172.30.36.123:9876

broker的地址: 172.30.36.123:10911

源码调试选择4.5.1,不要选择4.8.0等最新版本,这些版本的调试总会报些奇怪的错误

在这里插入图片描述
if (null == nsList || nsList.isEmpty()) {
nsList.add(“127.0.0.1:9876”);
}
if (null == nsList || nsList.isEmpty()) {
throw new MQClientException(
“No name server address, please set it.” + FAQUrl.suggestTodo(FAQUrl.NAME_SERVER_ADDR_NOT_EXIST_URL), null).setResponseCode(ClientErrorCode.NO_NAME_SERVER_EXCEPTION);
}

因为使用的是虚拟机,设置内存也只有1G,所以从 Windows 上开发连接 虚拟机中的 nameServer 时要经过 Linux 系统的防火墙,而防火墙一般都会有超时的机制,在网络连接长时间不传输数据时,会关闭这个 TCP 的会话,关闭后再读写,就有可能导致这个异常。

RemotingTooMuchRequestException: sendDefaultImpl call timeout

关闭window放火墙之后,错误变成
Caused by: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to 172.30.36.123:9876 failed

消息队列采取的是发布订阅者模式
在这里插入图片描述
namesrv想到于注册中心的角色,它有心跳检测机制
在这里插入图片描述
nameserver是接受请求并做出响应

我要消费信息,我需要到哪个broker中找,它会询问nameserve

心跳包,初始化

在这里插入图片描述
在这里插入图片描述
producer主动去拉,而不是nameserve主动推

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值