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