• RocketMQ之broker读取本地文件数据


    这个load操作发生在启动broker的时候。

    所以我们直接进入DefaultMessageStore的load()方法:

       /**
         * 加载数据
         *
         * @throws IOException
         */
        public boolean load() {
            boolean result = true;
    
            try {
                boolean lastExitOK = !this.isTempFileExist();
                log.info("last shutdown {}", (lastExitOK ? "normally" : "abnormally"));
    
                // load 定时进度
                // 这个步骤要放置到最前面,从CommitLog里Recover定时消息需要依赖加载的定时级别参数
                // slave依赖scheduleMessageService做定时消息的恢复
                if (null != scheduleMessageService) {
                    result = result && this.scheduleMessageService.load();
                }
    
                // load Commit Log
                result = result && this.commitLog.load();
    
                // load Consume Queue
                result = result && this.loadConsumeQueue();
    
                if (result) {
                    this.storeCheckpoint =
                            new StoreCheckpoint(StorePathConfigHelper.getStoreCheckpoint(this.messageStoreConfig.getStorePathRootDir()));
    
                    this.indexService.load(lastExitOK);
    
                    // 尝试恢复数据
                    this.recover(lastExitOK);
    
                    log.info("load over, and the max phy offset = {}", this.getMaxPhyOffset());
                }
            } catch (Exception e) {
                log.error("load exception", e);
                result = false;
            }
    
            if (!result) {
                this.allocateMapedFileService.shutdown();
            }
    
            return result;
        }

    新开了一篇来写:http://www.cnblogs.com/guazi/p/6836112.html

  • 相关阅读:
    软件工程(2019)第二次作业
    软件工程(2019)第一次作业
    【Java基础】字面量相加的类型转换
    测试之合作篇
    功能测试之难以重现的bug
    功能测试知识之Web输入框验证
    如何编写有效的测试用例?
    Java:switch语句例子
    【转】成功的概念
    Java里的if else嵌套语句例子
  • 原文地址:https://www.cnblogs.com/guazi/p/6675541.html
Copyright © 2020-2023  润新知