All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.rocketmq.example.simple.RandomAsyncCommit Maven / Gradle / Ivy

The newest version!
package com.alibaba.rocketmq.example.simple;

import java.util.List;
import java.util.concurrent.ConcurrentHashMap;

import com.alibaba.rocketmq.common.message.MessageExt;
import com.alibaba.rocketmq.common.message.MessageQueue;


public class RandomAsyncCommit {
    private final ConcurrentHashMap mqCachedTable =
            new ConcurrentHashMap();


    public void putMessages(final MessageQueue mq, final List msgs) {
        CachedQueue cachedQueue = this.mqCachedTable.get(mq);
        if (null == cachedQueue) {
            cachedQueue = new CachedQueue();
            this.mqCachedTable.put(mq, cachedQueue);
        }
        for (MessageExt msg : msgs) {
            cachedQueue.getMsgCachedTable().put(msg.getQueueOffset(), msg);
        }
    }


    public void removeMessage(final MessageQueue mq, long offset) {
        CachedQueue cachedQueue = this.mqCachedTable.get(mq);
        if (null != cachedQueue) {
            cachedQueue.getMsgCachedTable().remove(offset);
        }
    }


    /**
     * 可以被提交的Offset
     */
    public long commitableOffset(final MessageQueue mq) {
        CachedQueue cachedQueue = this.mqCachedTable.get(mq);
        if (null != cachedQueue) {
            return cachedQueue.getMsgCachedTable().firstKey();
        }

        return -1;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy