@@ -36,19 +36,20 @@ public class RocksDBConsumeQueue implements ConsumeQueueInterface {
36
36
private static final Logger ERROR_LOG = LoggerFactory .getLogger (LoggerName .STORE_ERROR_LOGGER_NAME );
37
37
38
38
private final MessageStore messageStore ;
39
+ private final ConsumeQueueStoreInterface consumeQueueStore ;
39
40
private final String topic ;
40
41
private final int queueId ;
41
42
42
- public RocksDBConsumeQueue (final MessageStore messageStore , final String topic , final int queueId ) {
43
+ public RocksDBConsumeQueue (final MessageStore messageStore , final ConsumeQueueStoreInterface consumeQueueStore ,
44
+ final String topic , final int queueId ) {
43
45
this .messageStore = messageStore ;
46
+ this .consumeQueueStore = consumeQueueStore ;
44
47
this .topic = topic ;
45
48
this .queueId = queueId ;
46
49
}
47
50
48
51
public RocksDBConsumeQueue (final String topic , final int queueId ) {
49
- this .messageStore = null ;
50
- this .topic = topic ;
51
- this .queueId = queueId ;
52
+ this (null , null , topic , queueId );
52
53
}
53
54
54
55
@ Override
@@ -114,7 +115,7 @@ public void cleanSwappedMap(long forceCleanSwapIntervalMs) {
114
115
@ Override
115
116
public long getMaxOffsetInQueue () {
116
117
try {
117
- return this .messageStore . getQueueStore () .getMaxOffsetInQueue (topic , queueId );
118
+ return this .consumeQueueStore .getMaxOffsetInQueue (topic , queueId );
118
119
} catch (RocksDBException e ) {
119
120
ERROR_LOG .error ("getMaxOffsetInQueue Failed. topic: {}, queueId: {}" , topic , queueId , e );
120
121
return 0 ;
@@ -124,8 +125,8 @@ public long getMaxOffsetInQueue() {
124
125
@ Override
125
126
public long getMessageTotalInQueue () {
126
127
try {
127
- long maxOffsetInQueue = this .messageStore . getQueueStore () .getMaxOffsetInQueue (topic , queueId );
128
- long minOffsetInQueue = this .messageStore . getQueueStore () .getMinOffsetInQueue (topic , queueId );
128
+ long maxOffsetInQueue = this .consumeQueueStore .getMaxOffsetInQueue (topic , queueId );
129
+ long minOffsetInQueue = this .consumeQueueStore .getMinOffsetInQueue (topic , queueId );
129
130
return maxOffsetInQueue - minOffsetInQueue ;
130
131
} catch (RocksDBException e ) {
131
132
ERROR_LOG .error ("getMessageTotalInQueue Failed. topic: {}, queueId: {}, {}" , topic , queueId , e );
@@ -158,7 +159,7 @@ public long getOffsetInQueueByTime(long timestamp, BoundaryType boundaryType) {
158
159
159
160
@ Override
160
161
public long getMaxPhysicOffset () {
161
- Long maxPhyOffset = this .messageStore . getQueueStore () .getMaxPhyOffsetInConsumeQueue (topic , queueId );
162
+ Long maxPhyOffset = this .consumeQueueStore .getMaxPhyOffsetInConsumeQueue (topic , queueId );
162
163
return maxPhyOffset == null ? -1 : maxPhyOffset ;
163
164
}
164
165
@@ -195,7 +196,6 @@ public void correctMinOffset(long minCommitLogOffset) {
195
196
196
197
/**
197
198
* Ignored, in rocksdb mode, we build cq in RocksDBConsumeQueueStore
198
- * @see org.apache.rocketmq.store.queue.RocksDBConsumeQueueStore#putMessagePosition()
199
199
*/
200
200
@ Override
201
201
public void putMessagePositionInfoWrapper (DispatchRequest request ) {
@@ -208,7 +208,7 @@ public void assignQueueOffset(QueueOffsetOperator queueOffsetOperator, MessageEx
208
208
Long queueOffset = queueOffsetOperator .getTopicQueueNextOffset (topicQueueKey );
209
209
if (queueOffset == null ) {
210
210
// we will recover topic queue table from rocksdb when we use it.
211
- queueOffset = this .messageStore . getQueueStore () .getMaxOffsetInQueue (topic , queueId );
211
+ queueOffset = this .consumeQueueStore .getMaxOffsetInQueue (topic , queueId );
212
212
queueOffsetOperator .updateQueueOffset (topicQueueKey , queueOffset );
213
213
}
214
214
msg .setQueueOffset (queueOffset );
@@ -306,7 +306,7 @@ public CqUnit get(long index) {
306
306
public Pair <CqUnit , Long > getCqUnitAndStoreTime (long index ) {
307
307
ByteBuffer byteBuffer ;
308
308
try {
309
- byteBuffer = this .messageStore . getQueueStore () .get (topic , queueId , index );
309
+ byteBuffer = this .consumeQueueStore .get (topic , queueId , index );
310
310
} catch (RocksDBException e ) {
311
311
ERROR_LOG .error ("getUnitAndStoreTime Failed. topic: {}, queueId: {}" , topic , queueId , e );
312
312
return null ;
@@ -324,7 +324,7 @@ public Pair<CqUnit, Long> getCqUnitAndStoreTime(long index) {
324
324
@ Override
325
325
public Pair <CqUnit , Long > getEarliestUnitAndStoreTime () {
326
326
try {
327
- long minOffset = this .messageStore . getQueueStore () .getMinOffsetInQueue (topic , queueId );
327
+ long minOffset = this .consumeQueueStore .getMinOffsetInQueue (topic , queueId );
328
328
return getCqUnitAndStoreTime (minOffset );
329
329
} catch (RocksDBException e ) {
330
330
ERROR_LOG .error ("getEarliestUnitAndStoreTime Failed. topic: {}, queueId: {}" , topic , queueId , e );
@@ -341,7 +341,7 @@ public CqUnit getEarliestUnit() {
341
341
@ Override
342
342
public CqUnit getLatestUnit () {
343
343
try {
344
- long maxOffset = this .messageStore . getQueueStore () .getMaxOffsetInQueue (topic , queueId );
344
+ long maxOffset = this .consumeQueueStore .getMaxOffsetInQueue (topic , queueId );
345
345
return get (maxOffset > 0 ? maxOffset - 1 : maxOffset );
346
346
} catch (RocksDBException e ) {
347
347
ERROR_LOG .error ("getLatestUnit Failed. topic: {}, queueId: {}, {}" , topic , queueId , e .getMessage ());
@@ -355,7 +355,7 @@ public long getLastOffset() {
355
355
}
356
356
357
357
private ReferredIterator <CqUnit > iterateFrom0 (final long startIndex , final int count ) throws RocksDBException {
358
- List <ByteBuffer > byteBufferList = this .messageStore . getQueueStore () .rangeQuery (topic , queueId , startIndex , count );
358
+ List <ByteBuffer > byteBufferList = this .consumeQueueStore .rangeQuery (topic , queueId , startIndex , count );
359
359
if (byteBufferList == null || byteBufferList .isEmpty ()) {
360
360
if (this .messageStore .getMessageStoreConfig ().isEnableRocksDBLog ()) {
361
361
log .warn ("iterateFrom0 - find nothing, startIndex:{}, count:{}" , startIndex , count );
@@ -449,7 +449,7 @@ public CqUnit next() {
449
449
450
450
final ByteBuffer byteBuffer ;
451
451
try {
452
- byteBuffer = messageStore . getQueueStore () .get (topic , queueId , startIndex + currentIndex );
452
+ byteBuffer = consumeQueueStore .get (topic , queueId , startIndex + currentIndex );
453
453
} catch (RocksDBException e ) {
454
454
ERROR_LOG .error ("get cq from rocksdb failed. topic: {}, queueId: {}" , topic , queueId , e );
455
455
return null ;
0 commit comments