当前位置: 首页>>代码示例>>Java>>正文


Java UtilAll.offset2FileName方法代码示例

本文整理汇总了Java中com.alibaba.rocketmq.common.UtilAll.offset2FileName方法的典型用法代码示例。如果您正苦于以下问题:Java UtilAll.offset2FileName方法的具体用法?Java UtilAll.offset2FileName怎么用?Java UtilAll.offset2FileName使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.alibaba.rocketmq.common.UtilAll的用法示例。


在下文中一共展示了UtilAll.offset2FileName方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getLastMapedFile

import com.alibaba.rocketmq.common.UtilAll; //导入方法依赖的package包/类
/**
 * 是否以创建新的MapFile的方式获取一个新的文件。
 * @param startOffset 开始的起始位点,
 * @param needCreate 是否需要创建新的mapfile .
 * 当消息到达broker时,需要获取最新的MapedFile写入数据,调用MapedFileQueue的getLastMapedFile获取,此函数如果集合中一个
 * 也没有创建一个,如果最后一个写满了也创建一个新的。
 * @return
 */
public MapedFile getLastMapedFile(final long startOffset, boolean needCreate) {
    long createOffset = -1;
    MapedFile mapedFileLast = null;
    {
        this.readWriteLock.readLock().lock();
        if (this.mapedFiles.isEmpty()) { // mapfile为空的情况,则从startOffset做为create offset .
            createOffset = startOffset - (startOffset % this.mapedFileSize);
        }
        else {  //拿到了最后一个mapfile .
            mapedFileLast = this.mapedFiles.get(this.mapedFiles.size() - 1);
        }
        this.readWriteLock.readLock().unlock();
    }

    if (mapedFileLast != null && mapedFileLast.isFull()) { //拿到了最后一个mapfile 并且已经写满,  那么Createoffset
        // 就是最后一个mapfile的文件名(offset + 文件大小) 。
        createOffset = mapedFileLast.getFileFromOffset() + this.mapedFileSize;
    }

    if (createOffset != -1 && needCreate) {
        //创建下一个mapfile和下下个mapfile的路径。
        String nextFilePath = this.storePath + File.separator + UtilAll.offset2FileName(createOffset);
        String nextNextFilePath =
                this.storePath + File.separator
                        + UtilAll.offset2FileName(createOffset + this.mapedFileSize);
        MapedFile mapedFile = null;

        if (this.allocateMapedFileService != null) { //有异步分配Mapfile的服务。
            mapedFile =
                    this.allocateMapedFileService.putRequestAndReturnMapedFile(nextFilePath,
                        nextNextFilePath, this.mapedFileSize);
        }
        else {//  没有异步分配Mapfile的服务, 就创建一个。
            try {
                mapedFile = new MapedFile(nextFilePath, this.mapedFileSize);
            }
            catch (IOException e) {
                log.error("create mapedfile exception", e);
            }
        }

        if (mapedFile != null) { //加写锁,加入到mapfile队列。
            this.readWriteLock.writeLock().lock();
            if (this.mapedFiles.isEmpty()) {
                mapedFile.setFirstCreateInQueue(true);
            }
            this.mapedFiles.add(mapedFile);
            this.readWriteLock.writeLock().unlock();
        }

        return mapedFile;
    }

    return mapedFileLast;
}
 
开发者ID:y123456yz,项目名称:reading-and-annotate-rocketmq-3.4.6,代码行数:64,代码来源:MapedFileQueue.java

示例2: getLastMapedFile

import com.alibaba.rocketmq.common.UtilAll; //导入方法依赖的package包/类
public MapedFile getLastMapedFile(final long startOffset, boolean needCreate) {
    long createOffset = -1;
    MapedFile mapedFileLast = null;
    {
        this.readWriteLock.readLock().lock();
        if (this.mapedFiles.isEmpty()) {
            createOffset = startOffset - (startOffset % this.mapedFileSize);
        } else {
            mapedFileLast = this.mapedFiles.get(this.mapedFiles.size() - 1);
        }
        this.readWriteLock.readLock().unlock();
    }

    /**
     * 最后一个文件满了
     */
    if (mapedFileLast != null && mapedFileLast.isFull()) {
        createOffset = mapedFileLast.getFileFromOffset() + this.mapedFileSize;
    }

    if (createOffset != -1 && needCreate) {
        String nextFilePath = this.storePath + File.separator + UtilAll.offset2FileName(createOffset);
        String nextNextFilePath =
                this.storePath + File.separator
                        + UtilAll.offset2FileName(createOffset + this.mapedFileSize);
        MapedFile mapedFile = null;

        if (this.allocateMapedFileService != null) {
            mapedFile =
                    this.allocateMapedFileService.putRequestAndReturnMapedFile(nextFilePath,
                            nextNextFilePath, this.mapedFileSize);
        } else {
            try {
                mapedFile = new MapedFile(nextFilePath, this.mapedFileSize);
            } catch (IOException e) {
                log.error("create mapedfile exception", e);
            }
        }

        if (mapedFile != null) {
            this.readWriteLock.writeLock().lock();
            if (this.mapedFiles.isEmpty()) {
                mapedFile.setFirstCreateInQueue(true);
            }
            this.mapedFiles.add(mapedFile);
            this.readWriteLock.writeLock().unlock();
        }

        return mapedFile;
    }

    return mapedFileLast;
}
 
开发者ID:medusar,项目名称:rocketmq-commet,代码行数:54,代码来源:MapedFileQueue.java

示例3: getLastMapedFile

import com.alibaba.rocketmq.common.UtilAll; //导入方法依赖的package包/类
/**
 * 获取最后一个MapedFile对象,如果一个都没有,则新创建一个,如果最后一个写满了,则新创建一个
 * 
 * @param startOffset
 *            如果创建新的文件,起始offset
 * @return
 */
public MapedFile getLastMapedFile(final long startOffset) {
    long createOffset = -1;
    MapedFile mapedFileLast = null;
    {
        this.readWriteLock.readLock().lock();
        if (this.mapedFiles.isEmpty()) {
            createOffset = startOffset - (startOffset % this.mapedFileSize);
        }
        else {
            mapedFileLast = this.mapedFiles.get(this.mapedFiles.size() - 1);
        }
        this.readWriteLock.readLock().unlock();
    }

    if (mapedFileLast != null && mapedFileLast.isFull()) {
        createOffset = mapedFileLast.getFileFromOffset() + this.mapedFileSize;
    }

    if (createOffset != -1) {
        String nextFilePath = this.storePath + File.separator + UtilAll.offset2FileName(createOffset);
        String nextNextFilePath =
                this.storePath + File.separator
                        + UtilAll.offset2FileName(createOffset + this.mapedFileSize);
        MapedFile mapedFile = null;

        if (this.allocateMapedFileService != null) {
            mapedFile =
                    this.allocateMapedFileService.putRequestAndReturnMapedFile(nextFilePath,
                        nextNextFilePath, this.mapedFileSize);
        }
        else {
            try {
                mapedFile = new MapedFile(nextFilePath, this.mapedFileSize);
            }
            catch (IOException e) {
                log.error("create mapedfile exception", e);
            }
        }

        if (mapedFile != null) {
            this.readWriteLock.writeLock().lock();
            if (this.mapedFiles.isEmpty()) {
                mapedFile.setFirstCreateInQueue(true);
            }
            this.mapedFiles.add(mapedFile);
            this.readWriteLock.writeLock().unlock();
        }

        return mapedFile;
    }

    return mapedFileLast;
}
 
开发者ID:diwayou,项目名称:rocketmq-all-trans,代码行数:61,代码来源:MapedFileQueue.java

示例4: getLastMapedFile

import com.alibaba.rocketmq.common.UtilAll; //导入方法依赖的package包/类
/**
 * 获取最后一个MapedFile对象,如果一个都没有,则新创建一个,如果最后一个写满了,则新创建一个
 * 
 * chen.si 这里必须保证startOffset 是最后一个文件 的 offset,否则只会返回last file。这个需要上层应用控制,否则会有问题
 * 
 * @param startOffset
 *            如果创建新的文件,起始offset
 * @return
 */
public MapedFile getLastMapedFile(final long startOffset) {
    long createOffset = -1;
    MapedFile mapedFileLast = null;
    {
        this.readWriteLock.readLock().lock();
        /**
         * chen.si 如果没有文件,则计算出第1个文件的起始global offset,用来创建新文件
         */
        if (this.mapedFiles.isEmpty()) {
            createOffset = startOffset - (startOffset % this.mapedFileSize);
        }
        else {
        	/**
        	 * chen.si 直接获取最后一个元素
        	 */
            mapedFileLast = this.mapedFiles.get(this.mapedFiles.size() - 1);
        }
        this.readWriteLock.readLock().unlock();
    }

    /**
     * chen.si 最后一个文件满了,则自动扩展到下一个文件,计算出下一个文件的起始global offset
     */
    if (mapedFileLast != null && mapedFileLast.isFull()) {
        createOffset = mapedFileLast.getFileFromOffset() + this.mapedFileSize;
    }

    if (createOffset != -1) {
        String nextFilePath = this.storePath + File.separator + UtilAll.offset2FileName(createOffset);
        String nextNextFilePath =
                this.storePath + File.separator
                        + UtilAll.offset2FileName(createOffset + this.mapedFileSize);
        MapedFile mapedFile = null;

        if (this.allocateMapedFileService != null) {
        	/**
        	 * chen.si 异步分配 以及 预分配下一个文件
        	 */
            mapedFile =
                    this.allocateMapedFileService.putRequestAndReturnMapedFile(nextFilePath,
                        nextNextFilePath, this.mapedFileSize);
        }
        else {
            try {
            	/**
            	 * chen.si 直接创建文件
            	 */
                mapedFile = new MapedFile(nextFilePath, this.mapedFileSize);
            }
            catch (IOException e) {
                log.error("create mapedfile exception", e);
            }
        }

        if (mapedFile != null) {
            this.readWriteLock.writeLock().lock();
            if (this.mapedFiles.isEmpty()) {
                mapedFile.setFirstCreateInQueue(true);
            }
            this.mapedFiles.add(mapedFile);
            this.readWriteLock.writeLock().unlock();
        }

        return mapedFile;
    }

    return mapedFileLast;
}
 
开发者ID:brucechan0921,项目名称:RocketMQ-3.0.8,代码行数:78,代码来源:MapedFileQueue.java


注:本文中的com.alibaba.rocketmq.common.UtilAll.offset2FileName方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。