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

素颜马尾好姑娘i 2022-10-21 13:55 353阅读 0赞

文章目录

  • 参考文章
  • 视频
  • 调试

参考文章

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

  1. brokerClusterName = DefaultCluster
  2. brokerName = broker-a
  3. brokerId = 0
  4. deleteWhen = 04
  5. fileReservedTime = 48
  6. brokerRole = ASYNC_MASTER
  7. flushDiskType = ASYNC_FLUSH
  8. namesrvAddr=127.0.0.1:9876
  9. #存储路径
  10. storePathRootDir=D:\\rocketMqTestData\\store
  11. #commitLog 存储路径
  12. storePathCommitLog=D:\\rocketMqTestData\\store\\commitlog
  13. #消费队列存储路径存储路径
  14. storePathConsumeQueue=D:\\rocketMqTestData\\store\\consumequeue
  15. #消息索引存储路径
  16. storePathIndex=D:\\rocketMqTestData\\store\\index
  17. #checkpoint 文件存储路径
  18. storeCheckpoint=D:\\rocketMqTestData\\store\\checkpoint
  19. #abort 文件存储路径
  20. 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 条评论,353人围观)

还没有评论,来说两句吧...

相关阅读

    相关 调试RocketMQ

    1. 拷贝`namesrv`、`broker`的配置文件到指定目录,为了避免直接修改代码中的配置文件。 1.1 在F盘创建`rocketmq`文件夹,创建三个子文

    相关 ConcurrentHashMap阅读笔记

    > HashMap是我们用的比较多的数据结构,但是它在高并发下面进行put操作时,很有可能会引起死循环,这主要是在它扩容的情况下,导致链表头尾可能存在重复节点,而这时候解决的办